Swing/CloseOperation のバックアップ(No.12)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/CloseOperation へ行く。
- 1 (2005-06-27 (月) 01:43:23)
- 2 (2005-10-30 (日) 17:48:31)
- 3 (2006-02-27 (月) 15:33:38)
- 4 (2006-04-12 (水) 19:37:38)
- 5 (2007-04-06 (金) 21:18:10)
- 6 (2007-10-12 (金) 19:37:20)
- 7 (2008-01-17 (木) 12:46:37)
- 8 (2008-02-14 (木) 13:31:01)
- 9 (2011-03-07 (月) 15:12:52)
- 10 (2011-03-07 (月) 18:58:49)
- 11 (2013-03-28 (木) 17:58:31)
- 12 (2013-08-17 (土) 15:17:35)
- 13 (2014-05-22 (木) 14:03:02)
- 14 (2014-10-26 (日) 04:13:11)
- 15 (2015-03-04 (水) 17:20:03)
- 16 (2015-03-05 (木) 00:36:00)
- 17 (2016-12-08 (木) 14:23:44)
- 18 (2017-12-05 (火) 18:32:27)
- 19 (2019-08-09 (金) 18:36:43)
- 20 (2021-04-09 (金) 19:43:05)
- 21 (2025-01-03 (金) 08:57:02)
- 22 (2025-01-03 (金) 09:01:23)
- 23 (2025-01-03 (金) 09:02:38)
- 24 (2025-01-03 (金) 09:03:21)
- 25 (2025-01-03 (金) 09:04:02)
- 26 (2025-06-19 (木) 12:41:37)
- 27 (2025-06-19 (木) 12:43:47)
TITLE:JFrameの複数作成と終了
Posted by aterai at 2005-06-27
JFrameの複数作成と終了
`JFrame
`を複数作成し、これらをすべて閉じた時にアプリケーションを終了します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
private static int number = 0;
public static JFrame createFrame(String title) {
JFrame frame = new JFrame((title==null)?"Frame #"+number:title);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
number++;
//frame.addWindowListener(new WindowAdapter() {
// @Override public void windowClosing(WindowEvent e) {
// number--;
// if(number==0) {
// JFrame f = (JFrame)e.getSource();
// f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// }
// }
//});
return frame;
}
View in GitHub: Java, Kotlin解説
このサンプルでは、`WindowListener
で終了時に自分が最後のフレームの場合だけ
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
`するように設定しています。
すべてのフレームに、`setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
を設定して、
Java VM
内で最後の表示可能なウィンドウが破棄されると、
VM
`が終了するようになっています。
When DISPOSE_ON_CLOSE met WebStartによると、`Web Start
で実行する場合は
DISPOSE_ON_CLOSE
ではなく、
EXIT_ON_CLOSE
`を使っておいた方が良さそうです。このため、上記のサンプルでは、解説とは異なり、コメントアウトしたコードで終了するようになっています。
参考リンク
コメント
- `
1
代目の
jframe
から複数の
2
代目の
jframe
を作り出す。また
2
代目の
jframe
から3代目の
jframe
を作り出す。適当に選んだ
1
つの
2
代目
jframe
を閉じると、その
2
代目から作り出した
3
代目
jframe
も同時に
dispose
したい。即ち別の
2
代目とそこから生成した
3
代目には影響(
dispose
`)を及ぼさないするにはどうすれば宜しいでしょうか?宜しくご教示ください。 -- Panda?- ルートになる`
JFrame
は
EXIT_ON_CLOSE
、残りは
DISPOSE_ON_CLOSE
とし、各
JFrame
の親子関係をどこかに保持するなどしておけば、あとは閉じる時に自分(
JFrame
`)の子も深さ優先で検索して同様に閉じていくだけで特に問題ない?と思います。 -- aterai
- ルートになる`