• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JLabelに設定したニーモニックでフォーカス移動
#navi(../)
#tags(JLabel, JTextField, Mnemonic)
RIGHT:Posted by &author(aterai); at 2012-08-20
*JLabelに設定したニーモニックでフォーカス移動 [#kc4d4813]
``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
---
* 概要 [#summary]
`JLabel`にニーモニックを設定し、これに関連付けした`JTextField`へのフォーカス移動を行います。

-&jnlp;
-&jar;
-&zip;
#download(https://lh4.googleusercontent.com/-c8oDt2QGtY0/UDHQKTuRMGI/AAAAAAAABRQ/dzH-cDi9lEw/s800/LabelForDisplayedMnemonic.png)

//#screenshot
#ref(https://lh4.googleusercontent.com/-c8oDt2QGtY0/UDHQKTuRMGI/AAAAAAAABRQ/dzH-cDi9lEw/s800/LabelForDisplayedMnemonic.png)

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

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

----
- 編集不可の``JComboBox``などで、この方法ではフォーカスが移動しない?
-- タブキーなどによるフォーカス移動や``JComboBox#requestFocusInWindow()``を実行した場合のようにならない
-- [http://docs.oracle.com/javase/jp/6/api/javax/swing/JLabel.html#setLabelFor(java.awt.Component) JLabel#setLabelFor(Component) (Java Platform SE 6)]
-- 「ニーモニックがアクティブになったときに、labelFor プロパティーで指定されているコンポーネントの requestFocus メソッドを呼び出します。」
- ``JTextComponent``などのフォーカスアクセラレータ: [http://docs.oracle.com/javase/jp/6/api/javax/swing/text/JTextComponent.html#setFocusAccelerator(char) JTextComponent#setFocusAccelerator(char) (Java Platform SE 6)]
- 編集不可の`JComboBox`などにはこの方法を使用してもフォーカスが移動しない?
-- KBD{Tab}キーなどによるフォーカス移動や`JComboBox#requestFocusInWindow()`を実行した場合のようにならない
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JLabel.html#setLabelFor-java.awt.Component- JLabel#setLabelFor(Component) (Java Platform SE 8)]
-- 「ニーモニックがアクティブになったときに、`labelFor`プロパティーで指定されているコンポーネントの`requestFocus`メソッドを呼び出します。」
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/JTextComponent.html#setFocusAccelerator-char- JTextComponent#setFocusAccelerator(char) (Java Platform SE 8)]
-- ニーモニックを表示する必要がない場合は`JTextComponent`などに直接`JTextComponent#setFocusAccelerator(char)`でフォーカスアクセラレータキーを設定することも可能(`JLabel#setLabelFor(Component)`と合わせて設定してもどちらも有効)

//**参考リンク
**コメント [#m3543e30]
* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JLabel.html#setLabelFor-java.awt.Component- JLabel#setLabelFor(Component) (Java Platform SE 8)]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/text/JTextComponent.html#setFocusAccelerator-char- JTextComponent#setFocusAccelerator(char) (Java Platform SE 8)]

* コメント [#comment]
#comment
#comment