java - 更改选择选项卡上的 JTabbedPane 组件

标签 java swing jtabbedpane

我有一个 JTabbedPane,当用户选择它时,我需要替换选项卡 1 组件。 我无法在应用程序启动时直接添加正确的组件,因为我没有完整的数据来生成它。

我需要这样的东西:

    int tabTochange = 1;
    tabbedPane.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            if (tabbedPane.getSelectedIndex() == tabTochange)
            {
                JComponent component = generataComponent();
                tabbedPane.removeTabAt(tabTochange); // Remove old tab
                // add new one
                tabbedPane.insertTab("title", null, component, "tip", tabTochange);

            }
        }
    });

但是这段代码不起作用,它会删除选项卡 1 之后的其他选项卡并复制它。

最佳答案

使用 getComponentAt(tabTochange)getSelectedComponent(),而不是 removeTabAt()insertTab()获取组件的引用。根据需要更新组件,可能使用 CardLayout

关于java - 更改选择选项卡上的 JTabbedPane 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16854603/

相关文章:

java - 为什么 JLabel 在第一个字符时不显示 '/'?

java - 将 ActionListener 添加到 JTable 的列标题

Windows启动时的Java Swing Run程序

java - JTabbedPane。仅单击鼠标左键选择选项卡

java - 如何将标签添加到选项卡式 Pane 上的额外空间

java - DragTabFrame 关闭不一致

java - 如何取出字符串中的每个字符,并按倒序排列?

java - 如何防止GC回收弱引用对象?

java - Box上传后获取文件ID

java - Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用