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

解説

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


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

コメント