Java - JTabbedPane - ArrayIndexOutOfBoundsException при добавлении новой панели - PullRequest
0 голосов
/ 21 января 2012

У меня странная проблема с использованием 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, содержащие JTextFields, a MetaphaseEditor, полосы прокрутки, JLabels и JTextArea s и некоторые изображения (ImageIcon).

Кто-нибудь знает решение этой проблемы?

1 Ответ

2 голосов
/ 21 января 2012

из Bugtracker , может быть, вы используете компонент более одного раза?

Уточните в документации, что никаким 2 вкладкам в JTabbedPane не может быть назначен один и тот же компонент.вызывает java.lang.ArrayIndexOutOfBoundsException: 1> 0

...