アプリケーション終了をクローズ処理として設定

広告

フレームを表示させた時に、フレームの右上に3つのボタンが表示されます。

p4-1

一番右の「×」ボタンを押した時にどのような処理を行うのかを設定します。設定を行うにはJFrameクラスで定義されているsetDefaultCloseOperationメソッドを使います。

ユーザーがこのフレームの「クローズ」を開始したときに、デフォルトで実行される処理を設定しま
す。次のうち 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);

これでフレーム上の「×」を押すと、プログラムそのものが終了します。

サンプル

では実際に試してみます。

SSample4_1.java

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);
  }
}

ではコンパイルを行った上で実行してみます。

p4-2

表示されたフレームの右上にある「×」ボタンを押すとプログラムが終了します。プログラムを起動したコマンドプロンプトを見てもプログラムが終了しているのが確認できます。

p4-3

( Written by Tatsuo Ikura )