gpt4 book ai didi

java - 给 JTabbedPane 命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:03 26 4
gpt4 key购买 nike

我最近在为我的选项卡编制索引时遇到了问题,尽管我会使用 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

我在哪里绊倒了,有没有更简单的方法来订购我的 Pane ?

编辑:注释掉 setComponent 方法,并放入 for 循环我得到以下输出:

There are 3 tabs!
Tab at 0 is Character
Tab at 1 is Player
Tab at 2 is Games

一次取消注释一对方法,我只得到 2 个,一个是我没有覆盖的,一个是我现在设置的。

setComponentAt 是否删除了重复项?我的设置是否应该少于 3 个选项卡? JTabbedPanel 对于重复面板是否有奇怪的行为?

最佳答案

由于您尝试进行更改而出现错误 - 通过将某些 Pane 放到另一个位置,您会自动删除另一个选项卡。这就是您收到错误的原因 - 一些更改后选项卡少于 3 个(您可以在每次“setComponentAt”操作后检查输出选项卡的数量)。

简单地删除您想要重新排序的所有选项卡并使用 addTabinsertTab 读取它们 - 这将完成工作而不会出现任何错误。

关于java - 给 JTabbedPane 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11736708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com