【问题标题】:How to replace a existing tab in Jtabbedpane如何替换 Jtabbedpane 中的现有选项卡
【发布时间】:2013-12-06 10:00:40
【问题描述】:

我有一个带有 5 个选项卡的 JTabbedPane。我在每个选项卡中添加了一个 JPanel,比如 5 个 JPanel,每个选项卡上有几个组件。如果我想根据标志变量动态更新选项卡内容,比如替换选项卡 4 上的内容,我需要用新的 Jpanel 替换现有面板,如何在特定选项卡上实现此动态更新?

【问题讨论】:

    标签: java swing jtabbedpane


    【解决方案1】:

    实现这一目标的可能性更多。

    第一种可能是替换窗格的内容。假设您已添加要更新的窗格,如下所示:

     this.content = new JPanel();
     this.content.add(new JLabel("Content1"));
     myPane.addTab("Tab1", this.content);
    

    然后你可以改变标签的内容:

     this.content.removeAll();
     this.content.add(new JLabel("Content2"));
     this.content.revalidate();
     this.content.repaint();
    

    第二种可能性是完全删除标签,然后添加一个带有新内容的新标签。

     myPane.removeTabAt(index);
     myPane.addTab("New Tab", newContent);
    

    通常我更喜欢第一种可能性。

    【讨论】:

    • Generally I would prefer the first possibility - 除了代码不起作用。当您从可见 GUI 添加/删除组件时,您需要 revalidate() 和 repaint() 面板以确保调用布局管理器,然后重新绘制组件。
    【解决方案2】:

    在我能够区分 JTabbedPane 的 getComponentAt 和 getTabComponentAt 方法之前,我与这个愚蠢的问题斗争了一天。仅供参考,第一个获取选项卡的内容,后者获取选项卡的标题栏组件-.- 我用过这样的东西:

    //create new content for tab
    JPanel tabPanel = generateTab();
    //assign new content to tab
    tabbedPane.setComponentAt(index, tabPanel); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多