JLabelに設定したニーモニックでフォーカス移動
Total: 5580
, Today: 2
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
JLabel
にニーモニックを設定し、これに関連付けしたJTextField
へのフォーカス移動を行います。
Screenshot
Advertisement
サンプルコード
JLabel label = new JLabel("Mail Address: ");
label.setDisplayedMnemonic('M');
JTextField textField = new JTextField(12);
label.setLabelFor(textField);
View in GitHub: Java, Kotlin解説
上記のサンプルではJLabel
にsetDisplayedMnemonic(...)
メソッドを使ってニーモニックを設定し、setLabelFor(...)
メソッドでニーモニックがアクティブになった時にフォーカス移動の対象となるコンポーネントを指定しています。
- 編集不可の
JComboBox
などにはこの方法を使用してもフォーカスが移動しない?- Tabキーなどによるフォーカス移動や
JComboBox#requestFocusInWindow()
を実行した場合のようにならない
- Tabキーなどによるフォーカス移動や
- JLabel#setLabelFor(Component) (Java Platform SE 8)
- 「ニーモニックがアクティブになったときに、
labelFor
プロパティーで指定されているコンポーネントのrequestFocus
メソッドを呼び出します。」
- 「ニーモニックがアクティブになったときに、
- JTextComponent#setFocusAccelerator(char) (Java Platform SE 8)
- ニーモニックを表示する必要がない場合は
JTextComponent
などに直接JTextComponent#setFocusAccelerator(char)
でフォーカスアクセラレータキーを設定することも可能(JLabel#setLabelFor(Component)
と合わせて設定してもどちらも有効)
- ニーモニックを表示する必要がない場合は
参考リンク
- JLabel#setLabelFor(Component) (Java Platform SE 8)
- JTextComponent#setFocusAccelerator(char) (Java Platform SE 8)