我遇到以下代码问题:
public void detachTab(TabComponent tc) {
Logger.add("Detaching Tab");
for (int i = 0; i < globalTabbedPane.getTabCount(); i++) {
if (tc == globalTabbedPane.getTabComponentAt(i)) {
Logger.add("Detaching panel: " + i);
SeparateWindow sw = new SeparateWindow((JPanel) globalTabbedPane.getComponentAt(i));
sw.setVisible(true);
globalTabbedPane.remove(i);
return;
}
}
}
它只是从JTabbedPane中删除一个选项卡并将其放在一个单独的窗口中。相当自我解释。问题是该方法还删除了它下面的选项卡。我不明白这是怎么可能的。也许有一些东西可以忽视。
答案 0 :(得分:1)
我没有测试过这个,但是......
SeparateWindow sw = new SeparateWindow((JPanel) globalTabbedPane.getComponentAt(i))
可能会将Component
添加到窗口,将其从JTabbedPane
中删除,tabbedpane可能会删除关联的标签,现在意味着索引位置已更改,因此当您调用时
globalTabbedPane.remove(i);
您现在正在删除以下标签...
您可以尝试获取对组件的引用,删除它并创建窗口......
JPanel pane = (JPanel) globalTabbedPane.getComponentAt(i);
globalTabbedPane.remove(i);
SeparateWindow sw = new SeparateWindow(pane);