Swing/TabMnemonic のバックアップの現在との差分(No.7)
- 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:
概要
JTabbedPane
のタブにMnemonic
を追加します。
Screenshot
Advertisement
サンプルコード
#spanadd
JTabbedPane tab = new JTabbedPane();
#spanend
#spanadd
tab.addTab("Label", new JLabel("label"));
#spanend
#spanadd
tab.setMnemonicAt(0, KeyEvent.VK_L);
#spanend
#spanadd
tab.setDisplayedMnemonicIndexAt(0, 0);
#spanend
#spanadd
#spanend
#spanadd
tab.addTab("Tree", new JScrollPane(new JTree()));
#spanend
#spanadd
tab.setMnemonicAt(1, KeyEvent.VK_T);
#spanend
#spanadd
tab.setDisplayedMnemonicIndexAt(1, 0);
#spanend
#spanadd
#spanend
#spanadd
tab.addTab("TextField", new JTextField("field"));
#spanend
#spanadd
tab.setMnemonicAt(2, KeyEvent.VK_F);
#spanend
#spanadd
tab.setDisplayedMnemonicIndexAt(2, 4);
#spanend
#spanadd
#spanend
tab.addTab("Button", new JButton("button"));
tab.setMnemonicAt(3, KeyEvent.VK_B);
tab.setDisplayedMnemonicIndexAt(3, 0);
View in GitHub: Java, Kotlin解説
上記のサンプルコードは、例えばタブタイトルの先頭文字がB
のタブにAlt+Bでフォーカスが移動するように、JTabbedPane#setMnemonicAt(...)
メソッドを使用してMnemonic
を設定しています。
また、タブタイトルの先頭文字(B
)にアンダーラインが入るようにJTabbedPane#setDisplayedMnemonicIndexAt(...)
メソッドで設定しています。
上記のサンプルコードは、JTabbedPane
の3
番目のタブにJTabbedPane#setMnemonicAt(3, KeyEvent.VK_B)
メソッドを使用してMnemonic
を設定し、Alt+Bキーの入力でそのタブへのフォーカス移動を可能にしています。
- -
-
JDK 6
以降でタブにJComponent
を追加する場合、JTabbedPane#setDisplayedMnemonicIndexAt(...)
メソッドではMnemonic
にアンダーラインは引かれないので、追加するコンポーネント側でアンダーラインを引くよう設定する - タブタイトルの先頭文字(
B
)にアンダーラインが入るようにJTabbedPane#setDisplayedMnemonicIndexAt(...)
メソッドで設定 -
JDK 6
以降でタブタイトルにComponent
を使用している場合はJTabbedPane#setDisplayedMnemonicIndexAt(...)
メソッドを使用してもMnemonic
にアンダーラインは表示されない- 以下のように追加するコンポーネント側でアンダーラインを表示するための設定が必要
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);
- 以下のように追加するコンポーネント側でアンダーラインを表示するための設定が必要
参考リンク
- JTabbedPane#setMnemonicAt(...) (Java Platform SE 8)
- JTabbedPane#setDisplayedMnemonicIndexAt(...) (Java Platform SE 8)