如果只有一个选项卡存在,有没有办法隐藏JTabbedPane的选项卡栏?

2022-09-03 01:38:28

我想要一个类似于Firefox的行为,其中可用选项卡的列表仅在至少存在两个选项卡时才显示。

我还没能找到这样的东西。

我最好的主意是手动更改布局:

  • 如果是一个组件,只需将其添加到周围的面板中
  • 如果添加了组件,请从周围的面板中删除该组件,改为添加 JTabbedPane,然后将上一个组件和新组件添加到该窗格中。
  • 如果删除了某个组件,但窗格中只剩下一个组件,请删除该窗格并改为添加包含的组件。

虽然这可能有效,但感觉就像是黑客或解决方法...

有什么更好的主意吗?

理想情况下,解决方案应该同时适用于Java 1.5和1.6...但我也会对仅1.6的解决方案感到高兴。


答案 1

您可以重写计算选项卡按钮区域高度的 UI 方法,并在只有一个选项卡时强制高度:0

tabbed_pane.setUI(new BasicTabbedPaneUI() {  
    @Override  
    protected int calculateTabAreaHeight(int tab_placement, int run_count, int max_tab_height) {  
        if (tabbed_pane.getTabCount() > 1)
            return super.calculateTabAreaHeight(tab_placement, run_count, max_tab_height);  
        else  
            return 0;  
    }  
});  

答案 2

您可能最好简单地使用CardLayout


推荐