[英]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.