TITLE:JLabelに設定したニーモニックでフォーカス移動

Posted by at 2012-08-20

JLabelに設定したニーモニックでフォーカス移動

`JLabelにニーモニックを設定し、これに関連付けしたJTextField`へのフォーカス移動を行います。

  • &jnlp;
  • &jar;
  • &zip;
LabelForDisplayedMnemonic.png

サンプルコード

JLabel label = new JLabel("Mail Adress: ");
label.setDisplayedMnemonic('M');
JTextField textField = new JTextField(12);
label.setLabelFor(textField);
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、`JLabelsetDisplayedMnemonic(...)メソッドを使って、ニーモニックを設定し、setLabelFor(...)`メソッドでニーモニックがアクティブになった時にフォーカス移動の対象となるコンポーネントを指定しています。


  • 編集不可の`JComboBox`などで、この方法ではフォーカスが移動しない?
    • TABキーなどによるフォーカス移動や`JComboBox#requestFocusInWindow()`を実行した場合のようにならない
    • JLabel#setLabelFor(Component) (Java Platform SE 6)
    • 「ニーモニックがアクティブになったときに、`labelForプロパティーで指定されているコンポーネントのrequestFocus`メソッドを呼び出します。」
  • `JTextComponent`などのフォーカスアクセラレータ: JTextComponent#setFocusAccelerator(char) (Java Platform SE 6)

コメント