Ich habe den größten Teil meines Codes von einem kopiertOrakel-Beispiel, also denke ich, dass zumindest der Code, den ich nicht hinzugefügt habe, korrekt sein sollte und ich möchte das nicht ändern. Aber im Oracle-Code kann ich diese Zeile nicht implementieren, um meinen JFrame richtig zu schließen: frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
private static void createGUI() {
JFrame frame = new JFrame("NameChooser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==skipButton){
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING)); WindowEvent.WINDOW_CLOSING)); // does not work ofc
}
}
Wie kann ich meinen JFrame in der actionPerformed-Methode schließen, ohne diese korrekte Art des Öffnens eines JFrames zu zerstören?
Oder ist dieser Orakel-Code nur für Beispiele und nicht für echte Anwendungen geeignet?
Antworten:
0 für die Antwort № 1Du solltest machen frame
ein Instanzfeld wie folgt:
private static JFrame frame;
private static void createGUI()
{
frame = new JFrame( "NameChooser" );
...
}