ラジオボタンにキーボードニーモニックを設定する

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

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

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

ラジオボタンにキーボードニーモニックを設定するには JRadioButton クラスの親クラスである 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 でも同じです)。

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

JRadioButton radio = new JRadioButton("Apple");
radio.setMnemonic(KeyEvent.VK_A);

サンプルプログラム

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

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

class JSample14_1 extends JFrame{

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

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

    JRadioButton radio1 = new JRadioButton("Peach");
    radio1.setMnemonic(KeyEvent.VK_P);
    JRadioButton radio2 = new JRadioButton("Orange");
    radio2.setMnemonic(KeyEvent.VK_O);
    JRadioButton radio3 = new JRadioButton("Banana");
    radio3.setMnemonic(KeyEvent.VK_A);

    ButtonGroup bgroup = new ButtonGroup();
    bgroup.add(radio1);
    bgroup.add(radio2);
    bgroup.add(radio3);

    JPanel p = new JPanel();
    p.add(radio1);
    p.add(radio2);
    p.add(radio3);

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

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

javac JSample14_1.java

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

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

java JSample14_1

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

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

それでは ALT + O を押してみます。すると真ん中のラジオボタンがクリックされたのと同じ扱いになります。

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

-- --

ラジオボタンにキーボードニーモニックを設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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