• title: JLabelに設定したニーモニックでフォーカス移動 tags: [JLabel, JTextField, Mnemonic] author: aterai pubdate: 2012-08-20T15:34:19+09:00 description: JLabelにニーモニックを設定し、これに関連付けしたJTextFieldへのフォーカス移動を行います。

概要

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

サンプルコード

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)

コメント