ラベル Swing の投稿を表示しています。 すべての投稿を表示
ラベル Swing の投稿を表示しています。 すべての投稿を表示

2008年11月5日水曜日

SwingでWindowの終了を制御する

SwingでWindowの終了時に確認メッセージを表示してから終了させたい場合、以下のように実装する。

DefaultCloseOperationをDO_NOTHING_ON_CLOSEに設定すると、Windowの閉じるボタンを押下したときに何も処理を行わない。
※GUIクラスはJFrameの実装とする
JFrame gui = new GUI();
gui.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
gui.setVisible(true);
GUIクラスの初期化処理などで以下のようにWindowListenerを追加し、windowClosing(WindowEvent)メソッドを実装する。


addWindowListener(new java.awt.event.WindowAdapter() {
 public void windowClosing(WindowEvent e) {
  if (JOptionPane.showConfirmDialog(this, "Confirmation") == OptionPane.OK_OPTION) {
   dispose();
  }
 }
});

Swingで任意のコンポーネントにフォーカスを設定する

JComponent#requestFocus()は非推奨のため、JComponent#requestFocusInWindow()を使用する。

[例] テキストボックスが未入力の場合にそのテキストボックスにフォーカスを設定する

if (txtBudRoot.getText().isEmpty()) {
txtBudRoot.requestFocusInWindow();
}

[参考サイト]
How to Use the Focus Subsystem
JComponent (Java Platform SE 6)