チェックボックスにキーボードニーモニックを設定する

チェックボックスにはキーボードニーモニックを設定することができます。キーボードニーモニックとはチェックボックス毎に特定のキーを割り当て、そのキーが押されたらチェックボックスがクリックされたのと同じ扱いをするものです。ここではチェックボックスにキーボードニーモニックを設定する方法について解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

キーボードニーモニックを設定する

チェックボックスにキーボードニーモニックを設定するには JCheckBox クラスの親クラスである AbstractButton クラスで定義されている setMnemonic メソッドを使います。

public void setMnemonic(int mnemonic)

現在のモデルにキーボード・ニーモニックを設定します。 ニーモニックは、フォーカスがこのボタンの上位ウィンドウのどこかにある場合に、ルック・アンド・フィールのマウスなし修飾子(通常はAlt)と組み合わせて、このボタンを有効化するキーです。
ニーモニックはキーボード上の1つのキーに対応している必要があり、java.awt.event.KeyEventで定義されるVK_XXXキー・コードのどれかを使用して指定します。 これらのコード、およびインターナショナル・キーボード用のより広いコードの配列をjava.awt.event.KeyEvent.getExtendedKeyCodeForCharによって取得できます。 大文字、小文字は区別されないため、対応するキー・コードのキー・イベントは、Shiftキーが押されているかどうかにかかわらず、ボタンを有効化します。

ニーモニックで定義されている文字がボタンのラベル文字列にある場合は、その最初の文字に下線が付けられ、ニーモニックであることをユーザーに知らせます。

パラメータ:
mnemonic - ニーモニックを表すキー・コード

引数にはチェックボックスに設定したいキーを表す値を指定します。値は int 型の数値で指定しますが、指定できる値は java.awt.event.KeyEvent クラスで定義されています。キーボード上のキーに対応する値がほとんど定義されていますが数が非常に多いので数値とアルファベットだけご紹介します。

数値:
KeyEvent.VK_0 から KeyEvent.VK_9

アルファベット:
KeyEvent.VK_A から KeyEvent.VK_Z

例えば KeyEvent.VK_N を設定した場合、 ALT + n を押すとニーモニックが設定されたチェックボックスが押された状態になります。(大文字小文字は関係ないので ALT + N でも同じです)。

実際の使い方は次のようになります。

JCheckBox check = new JCheckBox("Travel");
check.setMnemonic(KeyEvent.VK_T);

なお、ニーモニックに設定した文字がチェックボックスの文字列に含まれている場合には、チェックボックスに表示されている文字列の該当の文字の下にアンダーバーが表示されます。またニーモニックに設定した文字がチェックボックスに複数含まれている場合は、最初に現れた文字にだけアンダーバーが表示されます。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample12_1.java という名前で保存します。

import javax.swing.JFrame;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;

class JSample12_1 extends JFrame{
  public static void main(String args[]){
    JSample12_1 frame = new JSample12_1("MyTitle");
    frame.setVisible(true);
  }

  JSample12_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JCheckBox check1 = new JCheckBox("Travel");
    check1.setMnemonic(KeyEvent.VK_T);
    JCheckBox check2 = new JCheckBox("Movie");
    check2.setMnemonic(KeyEvent.VK_O);
    JCheckBox check3 = new JCheckBox("Sports");
    check3.setMnemonic(KeyEvent.VK_S);

    JPanel p = new JPanel();
    p.add(check1);
    p.add(check2);
    p.add(check3);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}

次のようにコンパイルを行います。

javac JSample12_1.java

キーボードニーモニックを設定する(1)

コンパイルが終わりましたら実行します。

java JSample12_1

チェックボックスを 3 つ追加しました。それぞれのチェックボックスにはキーボードニーモニックが設定されており、チェックボックスの表示されている文字列のニーモニックが設定されている文字と同じ文字に下線が表示されています。

キーボードニーモニックを設定する(2)

それでは ALT + S を押してみます。すると右のチェックボックスがクリックされたのと同じ扱いになります。

キーボードニーモニックを設定する(3)

-- --

チェックボックスにキーボードニーモニックを設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。