Layout ändert sich beim Klicken

jworuna

Grünschnabel
Hallo,

habe einen JTree mit Icons, JCheckboxes, JRadioBUttons und Labels.
Jeder eintrag im JTree ist ein JPanel mit BorderLayout. Icon ist WEST, CheckBox ist CENTER, Label ist EAST.
Wie im Bild zu sehen zieht sich das Layout beim Klicken einen Eintrag zusammen. Wenn man auf die CheckBox Klickt ist es sogar noch schlimmer und die CheckBox wird vom Label überlagert.
Hab schon versucht mittels MouseAdapter beim Klicken einen neuen Border zu erstellen, Hilft aber nicht oder ich verwendet denn falschen BorderTyp.

layoutce.png

Code:
checkBox = new JCheckBox();
		checkBox.setVisible(false);
		checkBox.setOpaque(true);
		checkBox.addActionListener(this);
		checkBox.setBorder(null);
		checkBox.setBackground(UIManager.getColor("Tree.background"));
		checkBox.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
                                checkBox.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 1));
			}

			public void mouseReleased(MouseEvent e) {
                                checkBox.setBorder(null);
			}
		});

Denke aber mal das es am BorderLayout liegt. Komisch ist nur das dieses Problem nur bei Windows auftaucht. An meinem
Mac wird das Layout beim Klicken nicht geändert.

mfg.jworuna
 
Hi
Das klingt so, als würden irgendwo nach dem Verändern der Oberfläche Teile davon nicht neu gezeichnet. Bringt dir SwingUtilities.updateComponentTreeUI etwas?
An sonsten würde ich auch für die Einträge im JTree keine JPanels verwenden, sondern horizontale Boxen (javax.swing.Box). Du willst ja ein horizontales Layout und nix anderes.
 
Zurück