以下の日本語入力システム制御機能を利用する部品を使用したアプリケーションに必要となる、終了時の処理について説明します。
日本語入力システム制御機能を持つ部品(テキスト編集部品)
JFFieldクラスの継承クラス、JFFieldFilledクラス、JFTextAreaクラス、テキスト編集部品を標準で利用している部品
JFTableViewクラス、JFTreeクラス、JFChoiceクラス
JFTableViewクラス/JFTreeクラス/JFChoiceクラスの部品を継承している部品
JBKインストール時に「日本語入力機能の補完」を選択した場合は、日本語入力システムを制御するためにネイティブのライブラリが使われます。この場合、アプリケーションの終了時には、日本語入力システム制御機能を利用する部品を破棄する必要があります。破棄しないままアプリケーションを終了した場合には、日本語入力システムを制御するネイティブのライブラリ内で確保された資源が解放されません。
JBKインストール時に「日本語入力機能の補完」を選択していない場合は、ネイティブのライブラリは利用されません。この場合、アプリケーション終了時に特別な処理をする必要はありません。
アプリケーションの終了時の処理
日本語入力システムを制御するネイティブのライブラリで確保された資源は、日本語入力システム制御機能を利用する部品がすべて破棄されたときに、一緒に解放されます。
部品を破棄するには、部品を貼り付けたウィンドウを削除する必要があります。ウィンドウの削除には、Windowクラスのdispose()メソッドを用います。アプリケーションの終了時には、アプリケーションのウィンドウに対して、必ずdispose()メソッドを呼び出してから終了するようにしてください。
ただし、日本語入力システム制御機能を利用する部品をアプレットに貼り付け、appletviewerなどのブラウザを用いてアプレットを実行した場合には、ブラウザがそのアプレットのdispose()メソッドを自動的に呼び出します。したがって、ユーザがアプレットのウィンドウに対してdispose()メソッドを呼び出す必要はありません。
例
アプリケーション終了処理の例
以下の例では、ウィンドウリスナを利用して、アプリケーションの終了時にJFFieldString部品を貼りつけたウィンドウを削除しています。
/**
* サンプルアプリケーション
*/
public class MySample {
/*
* アプリケーションのメイン関数
*/
public static void main(String[] args) {
:
// アプリケーションのウィンドウ(フレーム)を作成
Frame mainWindow = new Frame("MyApplication");
:
// ウィンドウ上にパネルを貼りつける
Panel mainPanel = new JFPanel();
mainWindow.add(mainPanel);
:
// JFFieldString部品を生成
JFFieldString fieldString = new JFFieldString();
// パネル上にJFFieldString部品を貼りつける
mainPanel.add(fieldString);
:
// アプリケーションの終了処理用のウィンドウアダプタを登録
mainWindow.addWindowListener(new MyWindowAdapter());
:
}
}
/*
* アプリケーションの終了処理を行うためのウィンドウアダプタ
*/
class MyWindowAdapter extends WindowAdapter {
/*
* ウィンドウがクローズ処理中であるときに呼び出されます。
*/
public void windowClosing(WindowEvent e){
// イベントが発生したウィンドウを取得
Window window = e.getWindow();
// アプリケーションのウィンドウを削除
window.dispose();
// アプリケーションを終了
System.exit(0);
}
} |