JFrameの複数作成と終了

編集者:Terai Atsuhiro
作成日:2005-06-27
更新日:2021-04-09 (金) 19:43:05

概要

JFrameを複数作成し、これらをすべて閉じた時にアプリケーションを終了します。

http://terai.xrea.jp/swing/closeoperation/screenshot.png

サンプルコード

private static int number = 0;
public static JFrame createFrame(String title) {
  JFrame frame = new JFrame(title);
  if(number==0) {
    frame.getContentPane().add(new MainPanel());
  }
  number++;
  WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
      number--;
      if(number==0) {
        JFrame f = (JFrame)e.getSource();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
  };
  frame.addWindowListener(l);
  return frame;
}

解説

上記のサンプルでは、WindowListenerで終了時に自分が最後のフレームの場合だけsetDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)するように設定しています。

コメント