/ / JFrame in der actionPerformed-Methode schließen (JFrame ist eine private statische Leerstelle, createGUI ()) - java, swing, jframe

Schließen Sie JFrame in actionPerformed-Methode (JFrame ist privates statisches void createGUI ()) - java, swing, jframe

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 № 1

Du solltest machen frame ein Instanzfeld wie folgt:

private static JFrame frame;

private static void createGUI()
{
frame = new JFrame( "NameChooser" );
...
}