[英]Is there a way to hide the tab bar of JTabbedPane if only one tab exists?
我想要一个类似于Firefox的行为,其中可用选项卡列表仅在至少存在两个选项卡时才会显示。
我还是找不到那样的东西。
我最好的想法是手动更改布局:
虽然这可能会工作,感觉就像一个黑客或解决方法......
有什么好主意吗?
理想情况下,解决方案应该适用于Java 1.5和1.6 ......但我也很高兴只有1.6的解决方案。
您可以覆盖计算选项卡按钮区域高度的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;
}
});
我相信你必须手动完成它。 显然它以前已经完成 ,但只是作为一个似乎不可用的系统的一小部分。
你的方法对我来说很好。 我会像你所说的那样做,并将所有逻辑包装在一个自定义的JComponent
这样它就会感觉不那么hackish了。
简单地使用CardLayout
可能会更好。
是的,有一种方法。 我花了四个小时在oracle网站上找到: http : //docs.oracle.com/javase/7/docs/api/javax/swing/JTabbedPane.html#setTabLayoutPolicy()
只需使用:
//declare
private JTabbedPane editor = new JTabbedPane ();
//construct like this:
editor.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
//just add components and see how it goes.
editor.addTab("", newPanel);
另一种选择是自定义JTabbedPane使用的L&F委托(BasicTabbedPaneUI或WindowsTabbedPaneUI,具体取决于您关注的平台)。 这将允许您在仅显示单个选项卡的情况下自定义选项卡式窗格的行为。
这是另一种做事方式,但我会说这是一项非常艰巨的任务,并且做了迈克尔所说的将会以更少的努力获得你想去的地方。 我只想将此作为答案发布,以防您不知道此选项。
我认为这可以使用标签栏和卡片布局来实现,
这应该做的工作。
jTabbedPane1.removeTabAt(0);
似乎在initComponents();
之后工作initComponents();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.