JTabbedPane问题

时间:2014-12-16 23:47:28

标签: java swing jtabbedpane

我遇到以下代码问题:

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中删除一个选项卡并将其放在一个单独的窗口中。相当自我解释。问题是该方法还删除了它下面的选项卡。我不明白这是怎么可能的。也许有一些东西可以忽视。

1 个答案:

答案 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);