我在使用以下代码时遇到问题:
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
中删除,则选项卡式窗格可能正在删除关联的选项卡,这意味着索引位置已更改,因此当您调用globalTabbedPane.remove(i);
您现在要删除以下标签...
您可以尝试获取对该组件的引用,将其删除并创建窗口。
JPanel pane = (JPanel) globalTabbedPane.getComponentAt(i);
globalTabbedPane.remove(i);
SeparateWindow sw = new SeparateWindow(pane);