2012-01-21 24 views
0

JTabbedPaneを使用して新しいタブを追加すると奇妙な問題が発生します。このコードを実行する新しいパネルを追加するときにJava - JTabbedPane - ArrayIndexOutOfBoundsExceptionが発生する

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 

奇妙なことは、この方法は、一度に動作すること、であり、別の時間には、この例外がスローされます。追加されたタブは、JTextFieldsMetaphaseEditor、スクロールバー、JLabelsおよびJTextAreaといくつかのピクチャ(ImageIcon)を含むクラスAbstractTabのインスタンスです。

誰でもこの問題の解決策を知っていますか?

+3

あなたはここに十分な情報を持っていないかもしれません私たちに答えを与えることができます。 [SSCCE](http://SSCCE.org)を作成して投稿することを検討してください。これは、外部のリソースを必要とする範囲で実行できる、あなたの問題を示す小さなコンパイル可能かつ実行可能なプログラムです。また、あなたが探している言葉は「奇妙」だと思います。 –

+3

'addTab()'と 'setSelectedComponent()'を使わないのはなぜですか?次に、インデックスについて気にする必要はありません。 – Stephan

答えて

2

Bugtracker複数のコンポーネントを使用していますか?

JTabbedPaneのには2つのタブがそれらに割り当てられ 同じ成分を有していないことを文書で明確に..は java.lang.ArrayIndexOutOfBoundsExceptionが発生します。> 0 1

+0

+1良いアイデア:-)しかし、実際のstacktraceは、上記のものと少し異なっています(JTabbedPane.checkIndexのIndexOOB) – kleopatra

関連する問題