我在使用以下代码时遇到问题:
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 中删除一个选项卡并将其放置在一个单独的窗口中。非常不言自明。问题是该方法还会删除其下方的选项卡。我不明白这怎么可能。也许我忽略了一些东西。
最佳答案
我没有测试过这个,但是......
SeparateWindow sw = new SeparateWindow((JPanel) globalTabbedPane.getComponentAt(i))
很可能将Component
添加到窗口,将其从JTabbedPane
中删除,然后选项卡 Pane 可能会删除关联的选项卡,现在意味着索引位置已改变了,所以当你打电话时
globalTabbedPane.remove(i);
您现在正在删除以下选项卡...
您可以尝试获取对该组件的引用,将其删除并创建窗口...
JPanel pane = (JPanel) globalTabbedPane.getComponentAt(i);
globalTabbedPane.remove(i);
SeparateWindow sw = new SeparateWindow(pane);
关于java - JTabbedPane 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516062/