我基本上试图在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