Problem mit BoxLayout

Orbit

Erfahrenes Mitglied
Hallo,
Hab da nen Fenster, keine Feste Größe mit BoxLayout. Da will ich untereinander ne menge
Sachen anordnen, zB. JCheckBoxen, die nen text "aktivieren" (von grau auf schwarz färben) und dem Benutzer nen JTextField freigeben.

Sache ist:
Immer wenn ich auf ne JCheckBox klicke, geht durch alle Komponenten ein Ruck, irgendwas muss für ganz kurze zeit seine Größe ändern.
Das lustige ist, dass das nicht nur die Komponenten unter der CheckBox betrifft, sondern alle...

Hat wer nen plan wie man das wegkriegt, ohne die Fenstergröße festzulegen und das null-layout zu verwenden?
Die Komponentren haben in sich auch versch. Größen, sprich mit GridLayout kommt man auch nicht voran.
mfg,
Orbit
 
Hi,

wenn du wirklich nur Text umfärbst und ein TextField enablest,
dürfte das eigentlich so nicht auftretten !

Hast mal ein bischen Code ? So GUI_Aufbau und ActionListener ! ?

Gruß JAdix
 
Hallo,

Hier ein paar Codeschnipsel...

HTML:
this.getContentPane().setLayout(new BoxLayout(this.getContentPane(),BoxLayout.Y_AXIS));
(Die Klasse erbt von JFrame)
min_dist_cb ist eine JCheckBox
meter_min_dist ,min_dist_text_1. JLabels
MIN_DIST_TEXTFIELD ein JTextField
Das ganze kommt dreimal mit versch. Komponenten vor.

Code:
		JPanel inlay_min_dist = new JPanel(null);
		inlay_min_dist.add(MIN_DIST_TEXTFIELD);
		
		meter_min_dist = new JLabel("m");
		meter_min_dist.setBounds(240,0,30,20);
		inlay_min_dist.add(meter_min_dist);
		add(inlay_min_dist);
Code:
		min_dist_cb.addItemListener(new ItemListener(){
			public void itemStateChanged(ItemEvent e){
				if(min_dist_cb.isSelected()){
					MIN_DIST_TEXTFIELD.setEnabled(true);
					meter_min_dist.setForeground(Color.black);
					min_dist_text_1.setForeground(Color.black);
				} else {
					MIN_DIST_TEXTFIELD.setEnabled(false);
					min_dist_text_1.setForeground(Color.lightGray);
					meter_min_dist.setForeground(Color.lightGray);
				}
			}
		});
 
Hi,

führst du vor/nach dem öffnen des Frames ein pack() aus ?

Tritt das ganze auch auf wenn du die setBounds() für die JLabels weg lässt ?

Gruß JAdix
 
Ein pack() ist leider nicht möglich, da die JLabels Texte in htaml Darstellung hjaben, die von selber umbrechen. Bei einem pack() würden diese JLabels sich auf eine Zeile beschrenken müssen.

Die setBounds() müssen da sein, da es sich bei diesen Komponenten um feste Komponenten handelt, die auf einem eigenen JPanel sitzen, das auf nulllayout geschaltet ist..
oder sehe ich das falsch?
 
Ups,

das mit dem null-Layout hab ich glatt überlesen ! Kann ja mal vorkommen !

Wenn du mal nur das Textfield-En/Disablest oder nur die Farbänderung machst,
tritt der fehler dann in einem Fall nicht auf ?

Im moment würde ich auf das TextField tippen auch wenns nicht sein dürfte ...
Weil schwarz ist ja nicht dicker als grau ! :-) Kicher

Gruß JAdix
 
Hallo,
liegt tatsächlich am Text. Und zwar an einem, der mit html seine zeilenumbrüche selbst verwaltet. Kann das daran liegen?
Gibts ne andere Möglichkeit nen JLabel dazuzubringen, den Text eigenständig umzubrechen als html?
mfg,
Orbit
 
Zurück