Swing/TabMnemonic の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TabMnemonic へ行く。
- Swing/TabMnemonic の差分を削除
--- category: swing folder: TabMnemonic title: JTabbedPaneのタブにMnemonicを追加 tags: [JTabbedPane, Mnemonic, JLabel] author: aterai pubdate: 2008-09-01T13:22:20+09:00 description: JTabbedPaneのタブにMnemonicを追加します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTUu2fjTpI/AAAAAAAAAmg/EST6gnFRH84/s800/TabMnemonic.png --- * 概要 [#summary] `JTabbedPane`のタブに`Mnemonic`を追加します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTUu2fjTpI/AAAAAAAAAmg/EST6gnFRH84/s800/TabMnemonic.png) * サンプルコード [#sourcecode] #code(link){{ JTabbedPane tab = new JTabbedPane(); tab.addTab("Label", new JLabel("label")); tab.setMnemonicAt(0, KeyEvent.VK_L); tab.setDisplayedMnemonicIndexAt(0, 0); tab.addTab("Tree", new JScrollPane(new JTree())); tab.setMnemonicAt(1, KeyEvent.VK_T); tab.setDisplayedMnemonicIndexAt(1, 0); tab.addTab("TextField", new JTextField("field")); tab.setMnemonicAt(2, KeyEvent.VK_F); tab.setDisplayedMnemonicIndexAt(2, 4); tab.addTab("Button", new JButton("button")); tab.setMnemonicAt(3, KeyEvent.VK_B); tab.setDisplayedMnemonicIndexAt(3, 0); }} * 解説 [#explanation] 上記のサンプルコードは、`JTabbedPane`の`3`番目のタブに`JTabbedPane#setMnemonicAt(3, KeyEvent.VK_B)`メソッドを使用して`Mnemonic`を設定し、KBD{Alt+B}のキー入力でそのタブにフォーカス移動が可能になっています。 上記のサンプルコードは、`JTabbedPane`の`3`番目のタブに`JTabbedPane#setMnemonicAt(3, KeyEvent.VK_B)`メソッドを使用して`Mnemonic`を設定し、KBD{Alt+B}キーの入力でそのタブへのフォーカス移動を可能にしています。 - タブタイトルの先頭文字(`B`)にアンダーラインが入るように`JTabbedPane#setDisplayedMnemonicIndexAt(...)`メソッドで設定 - `JDK 6`以降でタブタイトルに`Component`を使用している場合は`JTabbedPane#setDisplayedMnemonicIndexAt(...)`メソッドを使用しても`Mnemonic`にアンダーラインは表示されない -- 以下のように追加するコンポーネント側でアンダーラインを表示するための設定が必要 #code{{ int index = tab.getTabCount(); String tabTitle = "label(0)"; JPanel p = new JPanel(new BorderLayout()); JLabel label = new JLabel(tabTitle); JButton button = new JButton("x"); p.add(label, BorderLayout.WEST); p.add(button, BorderLayout.EAST); tab.addTab(tabTitle, new JTree()); tab.setTabComponentAt(index, p); tab.setMnemonicAt(index, KeyEvent.VK_0); label.setDisplayedMnemonic(KeyEvent.VK_0); }} * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#setMnemonicAt-int-int- JTabbedPane#setMnemonicAt(...) (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTabbedPane.html#setDisplayedMnemonicIndexAt-int-int- JTabbedPane#setDisplayedMnemonicIndexAt(...) (Java Platform SE 8)] * コメント [#comment] #comment #comment