Java - 添加新面板时的JTabbedPane - ArrayIndexOutOfBoundsException

时间:2012-01-21 12:18:14

标签: java swing jtabbedpane

我使用JTabbedPane并向其添加新标签时遇到了一个奇怪的问题。

public void addTab(String title, AbstractTab tab) {
    int i = tabPanel.getTabCount();
    System.out.println("Tab count:" + i);
    tab.validate();
    tabPanel.insertTab(title, null, tab, title, i);
    tabPanel.validate();
    tabPanel.setSelectedIndex(i);
}

运行此代码会导致以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.JTabbedPane.getTitleAt(Unknown Source)
at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.updateHtmlViews(Unknown Source)
at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.componentAdded(Unknown Source)
at java.awt.Container.processContainerEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at javax.swing.JTabbedPane.insertTab(Unknown Source)
at View.Swing.Global.**EditorPanel.addTab(EditorPanel.java:383)**
at View.Swing.Developer.DeveloperContentPanel.showNote(DeveloperContentPanel.java:176)
at View.Swing.Developer.DeveloperTreeViewer.clickedTreeElement(DeveloperTreeViewer.java:62)
at View.Swing.Global.TreeNavigation.mouseClicked(TreeNavigation.java:556)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
...

System.out.println(..);打印

Tab count 1 

奇怪的是,这个方法可以运行一次,另一次抛出这个异常。添加的标签是类AbstractTab的实例,包含JTextFieldsMetaphaseEditor,滚动条,JLabelsJTextArea以及一些图片({{1} })。

有没有人知道这个问题的解决方案?

1 个答案:

答案 0 :(得分:2)

来自Bugtracker

,也许您不止一次使用某个组件?

  

在文档中澄清JTabbedPane中没有2个选项卡可以拥有   分配给他们的相同组件..原因   java.lang.ArrayIndexOutOfBoundsException:1> 0