Hallo,
ich habe in einem Programm die Erzeugung des GUIs vom Listener getrennt. Das Problem ist jetzt, der Listener schließt meine Anwendung nicht. Der vorangestellte Dialog wird (mittig im Hauptfenster) angezeigt, die nachfolgende Zeile mit WindowEvent funktioniert jedoch nicht so wie gedacht. Wie sag ich meinem Listener das er die Anwendung schließen soll ?
ich habe in einem Programm die Erzeugung des GUIs vom Listener getrennt. Das Problem ist jetzt, der Listener schließt meine Anwendung nicht. Der vorangestellte Dialog wird (mittig im Hauptfenster) angezeigt, die nachfolgende Zeile mit WindowEvent funktioniert jedoch nicht so wie gedacht. Wie sag ich meinem Listener das er die Anwendung schließen soll ?
Code:
import javax.swing.*;
import java.awt.event.*;
public class guidemo1 {
public static void main(String[] args) {
new demoGUI();
}
}
@SuppressWarnings("serial")
class demoGUI extends JFrame {
public demoGUI() {
super("demoGui1");
setSize(300,100);
setLocation(200,200);
setVisible(true);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Datei");
menuBar.add(menu);
JMenuItem menuItem = new JMenuItem("Beenden");
menuItem.addActionListener(new demoListener(this));
menu.add(menuItem);
setJMenuBar(menuBar);
addWindowListener(new demoListener(this));
}
}
@SuppressWarnings("serial")
class demoListener extends JFrame implements ActionListener, WindowListener {
demoGUI gui;
public demoListener(demoGUI dgui) {
gui = dgui;
}
public void actionPerformed(ActionEvent ae) {
String eventMsg = ae.getActionCommand();
// Problem - Test Dialog wird angezeigt, aber WindowEvent nicht ausgeführt
if (eventMsg.equals("Beenden")) {
JOptionPane.showMessageDialog(gui, "Test");
processEvent(new WindowEvent(gui, WindowEvent.WINDOW_CLOSING));
}
}
public void windowClosing(WindowEvent we) {
JOptionPane.showMessageDialog(gui, "Programm wird beendet!");
//JOptionPane.showMessageDialog(we.getWindow(), "Programm wird beendet!");
System.exit(0);
}
public void windowOpened(WindowEvent arg0) {}
public void windowClosed(WindowEvent arg0) {}
public void windowIconified(WindowEvent arg0) {}
public void windowDeiconified(WindowEvent arg0) {}
public void windowActivated(WindowEvent arg0) {}
public void windowDeactivated(WindowEvent arg0) {}
}