私はシンプルなGUIを持っています:
public class MyGUI extends JFrame{
public MyGUI(){
run();
}
void run(){
setSize(100, 100);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// maybe an action listener here
}
}
このメッセージを出力したい:
System.out.println("Closed");
GUIが閉じられたとき(Xが押されたとき)。どうやってやるの?
これを試して。
addWindowListener(new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.out.println("Closed");
e.getWindow().dispose();
}
});
JFrameのコンストラクタ内でこのコードを記述します。
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new Java.awt.event.WindowAdapter() {
@Override
public void windowClosing(Java.awt.event.WindowEvent e) {
System.out.println("Uncomment following to open another window!");
//MainPage m = new MainPage();
//m.setVisible(true);
e.getWindow().dispose();
System.out.println("JFrame Closed!");
}
});
別の可能性は、Window
クラスの dispose()
をオーバーライドすることです。これにより、送信されるメッセージの数が減り、デフォルトのクローズ操作が_DISPOSE_ON_CLOSE
_に設定されている場合にも機能します。
具体的には、これは追加を意味します
_@Override
public void dispose() {
System.out.println("Closed");
super.dispose();
}
_
クラスMyGUI
に。
注:これは画面リソースを解放するため、super.dispose()
を呼び出すことを忘れないでください!