java - JTabbedPane 的问题

标签 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 中删除一个选项卡并将其放置在一个单独的窗口中。非常不言自明。问题是该方法还会删除其下方的选项卡。我不明白这怎么可能。也许我忽略了一些东西。

最佳答案

我没有测试过这个,但是......

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/

相关文章:

java - 从 JTabbedPane 中删除选项卡时,Canvas3D 选项卡正确停止渲染

java - 如何在不进行转换的情况下将Unix时间戳转换为LocalDate(Time)

java - 如何每 5 个元素对 intList 进行排序

java - JTable 自动滚动到底部

java - 在 JDialog 中创建 JTabbedPane 并使框架可用

java - JTabbedPane Swing 更新错误

java - 如何在我的 Android 设备上运行我的 Android 应用程序?

java - 我如何更快地获得 MongoDB 中的等效函数? WHERE 子句?

Java 事件队列。我什么时候应该考虑使用它?

java - 按键事件