2011-03-03 160 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。 –