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