デフォルトボタンを無効にする。

[next : フォントを統一する] [prev : 文字列操作編] [up : SwingTips]

デフォルトボタンを無効にする。


デフォルトボタンとは
WindowsのLook&Feelでは最後にフォーカスが入ったボタン。
どこかでEnterキーが押されるとデフォルトボタンのイベントが実行されてしまう。

解決法
javax.swing.JRootPaneに
void setDefaultButton(JButton)というメソッドがあるので
これにnullを渡すとデフォルトボタンが無くなります。
例:
public class HogeButton extends JButton {

    /**
     * テキスト付きのボタンを作成します。
     * <p>
     * 
     * @param text ボタンのテキスト
     */
    public HogeButton(String text){
        super(text);
        addFocusListener(new HogeButtonFocusListener());
    }

    /**
     * フォーカスリスナーです。<br>
     * フォーカスロスト時にJRootPane#setDefaultButton()にnullを設定して
     * デフォルトボタンを破棄します。
     */
    protected class HogeButtonFocusListener implements FocusListener {
        /**
         * JRootPaneからデフォルトボタンを破棄します。
         * <p>
         *
         * @param ev FocusEventオブジェクト
         */
        public void focusLost(FocusEvent ev){
            JRootPane root = getRootPane();
            if(root != null) {
                root.setDefaultButton(null);         // <---ここ
            }
        }
        /**
         * 何もしません。
         */
        public void focusGained(FocusEvent ev){
        }
    }
}

Last modified: Thu Mar 14 10:45:51 LMT 2002