Swing/LabelForDisplayedMnemonic のバックアップの現在との差分(No.3)
TITLE:JLabelに設定したニーモニックでフォーカス移動
Posted by aterai at 2012-08-20
JLabelに設定したニーモニックでフォーカス移動
JLabelにニーモニックを設定し、これに関連付けしたJTextFieldへのフォーカス移動を行います。- category: swing folder: LabelForDisplayedMnemonic title: JLabelに設定したニーモニックでフォーカス移動 tags: [JLabel, JTextField, Mnemonic] author: aterai pubdate: 2012-08-20T15:34:19+09:00 description: JLabelにニーモニックを設定し、これに関連付けしたJTextFieldへのフォーカス移動を行います。 image:
概要
JLabel
にニーモニックを設定し、これに関連付けしたJTextField
へのフォーカス移動を行います。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
JLabel label = new JLabel("Mail Adress: ");
#spanend
#spanadd
JLabel label = new JLabel("Mail Address: ");
#spanend
label.setDisplayedMnemonic('M');
JTextField textField = new JTextField(12);
label.setLabelFor(textField);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JLabelにsetDisplayedMnemonic(...)メソッドを使って、ニーモニックを設定し、setLabelFor(...)メソッドでニーモニックがアクティブになった時にフォーカス移動の対象となるコンポーネントを指定しています。解説
上記のサンプルではJLabel
にsetDisplayedMnemonic(...)
メソッドを使ってニーモニックを設定し、setLabelFor(...)
メソッドでニーモニックがアクティブになった時にフォーカス移動の対象となるコンポーネントを指定しています。
- -
- 編集不可のJComboBoxなどで、この方法ではフォーカスが移動しない?
- タブキーなどによるフォーカス移動やJComboBox#requestFocusInWindow()を実行した場合のようにならない
- JLabel#setLabelFor(Component) (Java Platform SE 6)
- 「ニーモニックがアクティブになったときに、labelFor プロパティーで指定されているコンポーネントの requestFocus メソッドを呼び出します。」
- JTextComponent などのフォーカスアクセラレータ: JTextComponent#setFocusAccelerator(char) (Java Platform SE 6)
- 編集不可の
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)