- Home ›
- Swing ›
- フレームの作成(JFrameクラス) ›
- HERE
アプリケーション終了をクローズ処理として設定
フレームを表示させた時に、フレームの右上に3つのボタンが表示されます。
一番右の「×」ボタンを押した時にどのような処理を行うのかを設定します。設定を行うにはJFrameクラスで定義されているsetDefaultCloseOperationメソッドを使います。
setDefaultCloseOperation public void setDefaultCloseOperation(int operation)
ユーザーがこのフレームの「クローズ」を開始したときに、デフォルトで実行される処理を設定しま す。次のうち 1 つを指定する必要があります。 * DO_NOTHING_ON_CLOSE (WindowConstants に定義):何も行わない。プログラムは登録されている WindowListener オブジェクトの windowClosing メソッドで処理を行う必要がある * HIDE_ON_CLOSE (WindowConstants に定義):登録されている任意の WindowListener オブジェク トを呼び出したあとで、自動的にフレームを隠す * DISPOSE_ON_CLOSE (WindowConstants に定義):登録されている任意の WindowListener オブジェ クトを呼び出したあとで、自動的にフレームを隠して破棄する * EXIT_ON_CLOSE (JFrame に定義):System の exit メソッドを使用してアプリケーションを終了 する。アプリケーションでのみ使用 デフォルトでは HIDE_ON_CLOSE が設定されます。このプロパティーの値を変更すると、プロパティー 名 defaultCloseOperation でプロパティー変更イベントがトリガーされます。 パラメータ: operation - ユーザーがフレームを閉じるときに実行されるべき処理 例外: IllegalArgumentException - defaultCloseOperation の値が前述の 有効な値と異なる場合 SecurityException - EXIT_ON_CLOSE が指定されていて、 SecurityManager が呼び出し側に System.exit の呼び出しを許可しない場合
引数に指定できる値は次の定数のいずれかです。(EXIT_ON_CLOSE以外はJFrameクラスでインプリメントしているWindowConstantsインターフェースで定義されています)。
JFrame.DO_NOTHING_ON_CLOSE JFrame.HIDE_ON_CLOSE JFrame.DISPOSE_ON_CLOSE JFrame.EXIT_ON_CLOSE
デフォルトの値はHIDE_ON_CLOSEとなっており、「×」ボタンを押してもフレームが非表示となるだけでプログラムそのものは終了しません。「×」ボタンが押された時にアプリケーションが終了するようにするにはEXIT_ON_CLOSEを設定する必要があります。
実際には次のように記述します。
JFrame frame = new JFrame("タイトル"); frame.setBounds(100, 100, 200, 160); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
これでフレーム上の「×」を押すと、プログラムそのものが終了します。
サンプル
では実際に試してみます。
import javax.swing.JFrame; class SSample4_1{ public static void main(String args[]){ JFrame frame = new JFrame("タイトル"); frame.setBounds(100, 100, 200, 160); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
ではコンパイルを行った上で実行してみます。
表示されたフレームの右上にある「×」ボタンを押すとプログラムが終了します。プログラムを起動したコマンドプロンプトを見てもプログラムが終了しているのが確認できます。
( Written by Tatsuo Ikura )