JTabbedPaneのタブにMnemonicを追加
Total: 6313
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JTabbedPane
のタブにMnemonic
を追加します。
Screenshot
Advertisement
サンプルコード
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);
View in GitHub: Java, Kotlin解説
上記のサンプルコードは、JTabbedPane
の3
番目のタブにJTabbedPane#setMnemonicAt(3, KeyEvent.VK_B)
メソッドを使用してMnemonic
を設定し、Alt+Bキーの入力でそのタブへのフォーカス移動を可能にしています。
- タブタイトルの先頭文字(
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)