2011-03-03 158 views
5

我想知道如何去除JtabbedPane和我的JFrame內容窗格之間以及JTabbedPane和它內部的JPanel之間的邊距。 我繞過了我想移除的邊距。綠線在這裏顯示jtabbedpane內jpanel之間的差距。Java:刪除JTabbedPane上的邊距/填充

我試圖看看一些名爲setMargin的方法,但它不存在於JTabbedPane中。我還檢查了不同佈局(根內容窗格,我的jpanel等)上的HgapVgap(均爲= 0)。

因此,任何建議,歡迎。 謝謝。

The image is here。我還無法發佈圖片。

+0

你有一個活生生的例子?如果你有,給我們一個鏈接,我可以解決你的CSS問題。 – bluefoot

+0

JAVA ...並有鏈接 – florian

回答

7

確定選項卡窗格中的組件周圍有多少空間取決於外觀和感覺 - 通常它會根據桌面的默認值進行此操作。 JTabbedPane沒有用於在內部組件周圍設置插入的方法。

可以這個集全球所有的標籤式窗格(警告:工程於MetalLookAndFeel,將可能爲Windows大號&˚F工作,以及,可能會爲GTK或雨雲看不做工和手感哪不基於BasicLookAndFeel)。這將改變所有的標籤式窗格出現在VM

UIManager.getDefaults().put("TabbedPane.contentBorderInsets", new Insets(0,0,0,0)); 
UIManager.getDefaults().put("TabbedPane.tabsOverlapBorder", true); 

您可能還需要確保你的JTabbedPane中有一個EmptyBorder(0,0,0,0)等做組件你把在裏面。

如果沒有目標的桌面上工作,替代品

  • ,如果你不關心你的標籤式窗格尋找不同於本地應用的標籤式窗格中,(不愉快)的替代方法是寫自己TabbedPaneUI
  • 設置UI委託你想看起來像這樣MetalTabbedPaneUI或其他一些UI委託,它確實這些特性響應單JTabbedPane的
+0

也謝謝。您的解決方案可以幫助我擺脫頂級的空白空間。 – florian

1

通過在UI元素上設置邊框來添加邊距。看看你的JTabbedPane的邊框設置。

+0

感謝您的回答,我可以通過爲「右」和「底」屬性設置負值來消除邊界。我認爲這樣做有點奇怪。 – florian

4

我剛剛打了同樣的問題,並沒有任何人說,似乎是一個完整的解決方案,所以我想出了這個:

import javax.swing.plaf.basic.BasicTabbedPaneUI; 

    tabbedPane.setUI(new BasicTabbedPaneUI() { 
     private final Insets borderInsets = new Insets(0, 0, 0, 0); 
     @Override 
     protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) { 
     } 
     @Override 
     protected Insets getContentBorderInsets(int tabPlacement) { 
      return borderInsets; 
     } 
    }); 

它的工作原理沒有重寫paintContentBorder方法是相同的,但這樣做可能使在調整大小或類似的過程中,UI的效率稍高一些,因爲標準似乎將其委託給多種其他方法。

在WindowMaker的Mac OS X 10.6.7和Mac Java 6的U37和Windows 7測試甲骨文的Java 6的U43爲Linux與Java 7個U07,希望這可以幫助別人:-)

+0

雖然這可以刪除邊框,但它也會更改實際選項卡上的UI。 –