我想知道如何删除JtabbedPane和JFrame内容窗格之间以及JTabbedPane与其内部JPanel之间的边距。 我在想要移除的边缘上空盘旋。 绿线在这里显示jtabbedpane内的jpanel之间的差距。
我试着看一下名为setMargin
的方法,但它在JTabbedPane上不存在。我还检查了不同布局(根内容窗格,我的jpanel等)上的Hgap
和Vgap
(均为= 0)。
所以欢迎任何建议。 感谢。
我还不能发布图片。
答案 0 :(得分:7)
根据外观和感觉决定选项卡式窗格内部组件周围的空间大小 - 通常它会根据桌面的默认值执行此操作。 JTabbedPane没有用于设置内部组件的插入的方法。
你可以为所有选项卡式窗格全局设置(警告:在MetalLookAndFeel上工作,可能也适用于Windows L& F,可能赢了' t 适用于不基于BasicLookAndFeel的GTK或Nimbus外观。这将更改中所有选项卡式窗格的外观:
UIManager.getDefaults().put("TabbedPane.contentBorderInsets", new Insets(0,0,0,0));
UIManager.getDefaults().put("TabbedPane.tabsOverlapBorder", true);
您可能还想确保您的JTabbedPane有一个EmptyBorder(0,0,0,0)以及放入其中的组件。
如果这不适用于您的目标桌面,则替代方案为
答案 1 :(得分:6)
我刚刚遇到同样的问题,没有其他任何人说过这似乎是一个完整的解决方案,所以我想出了这个:
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中测试Oracle Java 6 u43 for Linux,使用Mac Java 6 u37测试Mac OS X 10.6.7,使用Java 7 u07测试Windows 7,希望这有助于某人: - )
答案 2 :(得分:1)
通过在UI元素上设置边框来添加边距。请查看JTabbedPane
。