Hallo, ich habe eine grafische Oberfläche erstellt (AWT), bei der zu Beginn einige TextArea per setVisible unsichtbar sind. Klickt man auf eine checkbox, dann soll die textarea sichtbar werden (beim deaktivieren wieder unsichtbar).
Das hat auch wunderbar funktioniert, bis ich von ner abgespeckten J2ME auf die J2SE gewechselt habe, jetzt funktioniert das irgendwie nichtmehr.
Minimalbeispiel:
Java:
privateTextField test =newTextField();privateCheckbox sendCheckBox =newCheckbox();
Hier mein Beispiel. Setze ich test.setVisible(false) ( -->siehe Konstruktur) funktionierts nicht. Wenn ich aber setVisible zu Beginn auf true setze gehts....warum auch immer, allerdings ist es halt dann zu Beginn sichtbar, was ich nicht möchte.
Liegt dadran das sich das Layout nicht aktualisiert. Wenn du die Größe des Fensters veränderst erscheint das TextField plötzlich...
Ich hab mal ein Beispiel mit SWING gemacht, villeicht bewegt es dich auchnoch dazu aufs neuere [bessere] Swing umzusteigen:
Java:
importjava.awt.GridLayout;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjavax.swing.JCheckBox;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextField;publicclassDynamicGUI{publicstaticvoidmain(String[] args){newDynamicGUI();}JFrame window;JPanel panel;JCheckBox checkBox;JTextField textField;publicDynamicGUI(){
window =newJFrame();
window.setBounds(100,100,200,100);
panel =newJPanel();
window.add(panel);
panel.setLayout(newGridLayout(2,1));
checkBox =newJCheckBox("Sichtbar");
textField =newJTextField("Hello, World");
textField.setVisible(false);
panel.add(checkBox);
panel.add(textField);
checkBox.addItemListener(newItemListener(){publicvoiditemStateChanged(ItemEvent e){
textField.setVisible(checkBox.isSelected());//panel.revalidate(); Ist dazu da um das Layout zu aktualisieren, funktioniert in diesem Code aber auch ohne.}});
window.setVisible(true);}}
Ich würde viel lieber Swing verwenden, aber ich muss leider bei AWT bleiben, weil meine Anwendung eine bestehende Anwendung erweitert und die wurde wiederum mit der J2ME entwickelt, die Swing gar nicht unterstützt.
Ist das jetzt also ein Bug von Sun oder wie darf ich das verstehen? Kann ich die Aktualisierung irgendwie erzwingen oder muss ich jetzt zwingend ein anderes Layout nehmen? Ich bin im Prinzip leider gezwungen das Layout zu nehmen, vielleicht hat notfalls jemand ne Idee zu nem workaround.