我基本上試圖在jtabbedpane中的每個選項卡中添加一堆JPanel,並且它自行工作正常。但是,當按照Javatutorial向每個選項卡添加閉合按鈕時,它會在第一次(並且只是第一次)添加按鈕之後將這個奇怪的tabContainer添加到jtabbedpane。我知道水族是MAC相關,但問題仍然存在Linux和Windows ..
IM basicly做:
JTabbedPane pane;
this.add("channel",new JTextArea("texttexttext"));
ButtonTabComponent ctb = new ButtonTabComponent(pane);
this.setTabComponentAt(pane.indexOfTab("channel"),ctb);
第一個選項卡也完美的作品,但添加了所有未來的人是在beeing推一個索引因爲在屏幕截圖中可以看到AquaTabbedPaneCopyFromBasicUI $ TabContainer。所以,當我試圖讓他們離開tabbedpane更新一些信息(檢查下面鏈接的代碼)我無法施放它,因爲從indexOfTab(Channel)返回的索引beeing是水的索引..
調試和jtabbedPane的陣列screenShot:http://server.westman.no/free/Skjermbilde%202011-11-18%20kl.%2012.32.02.png
最糟糕的是,我不能刪除tabbedpane中的索引2,我只是得到outOfBoundsException,但我可以使用getComponent(2),(和那裏我第一次發現錯誤,因爲我可以getComponent(標題),它試圖返回水色...然後我不能將它投射到一個單一的對象,這是什麼想要的)
這是一個超現實的問題,可能看起來就像你有一些事情要做的事情一樣,但是我一直在這裏待了一個星期,在有好幾個人看着它之後,我沒有接近解決方案。 (它可以當然是gotDamnUrADumbAss難題..)
希望這對某人有意義!
代碼中的問題: tabHandler:http://apps.netcrawlr.net/p/pastebin.php?show=41
評論,如果你想看看別的引用。
SSCCE:
package jtabbedtest;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
/**
*
* @author hallvardwestman
*/
public class Jtabbedtest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
JFrame jf = new JFrame();
JTabbedPane jt = new JTabbedPane();
//debugChecks for whats in jtabbedpane
Object[] o = jt.getComponents();
jf.add(jt);
jt.addTab("a",new JTextArea("a"));
int tabIndex = jt.indexOfTab("a");
ButtonTabComponent ctb = new ButtonTabComponent(jt);
jt.setTabComponentAt(tabIndex, ctb);
/*
* adding closebutton
*/
//debugChecks for whats in jtabbedpane
o = jt.getComponents();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
and just put this : http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/components/TabComponentsDemoProject/src/components/ButtonTabComponent.java in a new file called ButtonTabComponent
請提供[SSCCE(http://sscce.org/)表現出的問題你描述。 – trashgod
添加了一個快速的sscce,如果在o = jt處設置了斷點,會帶來相同的結果。getComponents();你可以看到它包含一個jtextarea和一個*別的東西*我得到AquaTabbedPaneCopyFromBasicUI $ TabContainer atleast .. – Hwestman
在方法SeljeIRC.tabHandler.createNewTab(String,int)不應該做this.addTab(Channel,st) ;而不是this.add(Channel,st); ? – Zecas