Java - JTabbedPane - 添加新面板时出现 ArrayIndexOutOfBoundsException

标签 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、滚动条、JLabels >JTextArea 和一些图片 (ImageIcon)。

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

最佳答案

来自 Bugtracker ,也许您多次使用某个组件?

Clarify in documentation that no 2 tabs in a JTabbedPane can have the same component assigned to them.. causes java.lang.ArrayIndexOutOfBoundsException: 1 > 0

关于Java - JTabbedPane - 添加新面板时出现 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952901/

相关文章:

java - 使用现有 boolean 列类型的房间迁移

java - 下载完成后如何隐藏微调器(进度条)?

java - 为什么我的程序可以编译但不能运行?

java - "java.lang.ArrayIndexOutOfBoundsException: -1",同时将制表符添加到 "javax.swing.JTabbedPane"

java - lombok @Builder 方法

java - 如何使 Java 应用程序模块化

java - GIF 动画在 JFrame 中播放速度极快

java - 当我尝试从 getter 获取数据时,为什么会收到 NullPointerException?

java - 如何在JTabbedPane后台添加按钮?

java - "Highlighting"JTable 中的特定行