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: https://lh4.googleusercontent.com/-c8oDt2QGtY0/UDHQKTuRMGI/AAAAAAAABRQ/dzH-cDi9lEw/s800/LabelForDisplayedMnemonic.png

概要

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

サンプルコード

#spanend
#spandel
JLabel label = new JLabel("Mail Adress: ");
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JLabel label = new JLabel("Mail Address: ");
#spanend
label.setDisplayedMnemonic('M');
JTextField textField = new JTextField(12);
label.setLabelFor(textField);

解説

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

解説

上記のサンプルではJLabelsetDisplayedMnemonic(...)メソッドを使ってニーモニックを設定し、setLabelFor(...)メソッドでニーモニックがアクティブになった時にフォーカス移動の対象となるコンポーネントを指定しています。
  • - メモ
  • 編集不可のJComboBoxなどで、この方法ではフォーカスが移動しない?
    • JComboBox#requestFocusInWindow()を実行した場合と異なる
    • JLabel (Java Platform SE 6)
    • 「ニーモニックがアクティブになったときに、labelFor プロパティーで指定されているコンポーネントの requestFocus メソッドを呼び出します。」
  • 編集不可のJComboBoxなどにはこの方法を使用してもフォーカスが移動しない?
    • Tabキーなどによるフォーカス移動やJComboBox#requestFocusInWindow()を実行した場合のようにならない
  • JLabel#setLabelFor(Component) (Java Platform SE 8)
    • 「ニーモニックがアクティブになったときに、labelForプロパティーで指定されているコンポーネントのrequestFocusメソッドを呼び出します。」
  • JTextComponent#setFocusAccelerator(char) (Java Platform SE 8)
    • ニーモニックを表示する必要がない場合はJTextComponentなどに直接JTextComponent#setFocusAccelerator(char)でフォーカスアクセラレータキーを設定することも可能(JLabel#setLabelFor(Component)と合わせて設定してもどちらも有効)

コメント

参考リンク

コメント