yappy #4490(2007/11/29 17:39 GMT) [ Java ] Rating0/0=0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
import javax.swing.JFrame; public class ShowWindow { public static void main(String args[]) { final int WIDTH = 100; final int HEIGHT = 75; JFrame frame = new JFrame("こんにちは、GUI!"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setSize(WIDTH, HEIGHT); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
Rating0/0=0.00-0+
[ reply ]
yappy
#4490()
[
Java
]
Rating0/0=0.00
JFrame#setLocationRelativeTo(null);
が簡単です。
ついでに
ウィンドウをすべて破棄(dispose)すると、VMは終了します。実装方法はプラットフォームによって違うかもしれませんが、多分ウィンドウの全破棄を検知するスレッドが動いています。
よって、1ウィンドウならそれをdisposeすればVMは終了します。System.exit(int)を使うと本当にその場でVMを終了してしまいます。
しかしじゃあなんでJFrame.EXIT_ON_CLOSEなんてものがあるかといえば、それはまあ利便性のためで、宗教戦争じみてくるのでやめておきます。
とりあえず今回はSystem.exit(0);(EXIT_ON_CLOSE)で全く問題ありません。しかし同じ1行でdispose();(DISPOSE_ON_CLOSE)と書いても同じ動作が得られます。
×を押す
→windowCloseingイベント(setDefaultCloseOperationによる自動実行のタイミング)
dispose();する
→windowClosedイベント
windowCloseingでdispose();してwindowClosedに終了処理を書くとウィンドウがたくさんあっても管理が楽になります。
Rating0/0=0.00-0+
[ reply ]