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
ペインを注文する簡単な方法はありますか?
編集:setComponent
メソッドをコメントアウトし、for ループを挿入すると、次の出力が得られます。
タブは3つ!
0 のタブはキャラクターです
1 のタブはプレイヤー
です 2 のタブはゲームです
一度に 1 つのメソッドのペアのコメントを外すと、上書きしていないメソッドの 2 つと、現在設定したメソッドの 1 つのみが得られます。
setComponentAt
重複を削除していますか?セットアップでタブを 3 つ未満にする必要はありますか? JTabbedPanel は、複製されたペインに対して奇妙な動作をしますか?