我最近遇到了索引标签的问题,尽管我会使用该setComponentAt
方法对其进行一些具体的排序。这是我的代码:
public ContainerPane() {
this.setLayout(new BorderLayout());
myPlayerManagerPane = new PlayerManagerPane();
myGameManagerPane = new GameManagerPane();
myCharacterManagerPane = new CharacterManagerPane();
myPaneTab = new JTabbedPane(JTabbedPane.TOP);
myPaneTab.addTab("Character",myCharacterManagerPane);
myPaneTab.addTab("Player",myPlayerManagerPane);
myPaneTab.addTab("Games",myGameManagerPane);
System.out.println(myPaneTab.getTabCount());
//myPaneTab.setEnabledAt(1, false);
//myPaneTab.setEnabledAt(2, false);
myPaneTab.setComponentAt(0, myPlayerManagerPane);
myPaneTab.setMnemonicAt(0, KeyEvent.VK_1);
myPaneTab.setComponentAt(1, myCharacterManagerPane);
myPaneTab.setMnemonicAt(1, KeyEvent.VK_2);
myPaneTab.setComponentAt(2, myGameManagerPane);<---outOfBoundsException
myPaneTab.setMnemonicAt(2, KeyEvent.VK_3);
add(myPaneTab);
}
因此,对于我拥有的计数,3 个选项卡(根据我的说法和getTabCount()
),我从 0 开始计数(正确吗?)。我将最后一个索引设置为我拥有的最后一个组件。但我仍然有这个印刷要筛选:
3 <---from tabCount
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
我在哪里绊倒了,有没有更简单的方法来订购我的窗格?
编辑:注释掉setComponent
方法,并放入一个 for 循环我得到这个输出:
有3个标签!
0 的标签是角色
1 的标签是玩家
2 的标签是游戏
并且一次取消注释一对方法,我只得到两个,一个是我没有覆盖的,一个是我现在设置的。
是否setComponentAt
删除重复项?我的设置是否应该少于 3 个选项卡?JTabbedPanel 是否对重复窗格有奇怪的行为?