Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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:
private TextField test = new TextField();
private Checkbox sendCheckBox = new Checkbox();
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:
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class DynamicGUI {
public static void main(String[] args) {
new DynamicGUI();
}
JFrame window;
JPanel panel;
JCheckBox checkBox;
JTextField textField;
public DynamicGUI(){
window = new JFrame();
window.setBounds(100,100,200,100);
panel = new JPanel();
window.add(panel);
panel.setLayout(new GridLayout(2,1));
checkBox = new JCheckBox("Sichtbar");
textField = new JTextField("Hello, World");
textField.setVisible(false);
panel.add(checkBox);
panel.add(textField);
checkBox.addItemListener(new ItemListener(){
public void itemStateChanged(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.