【问题标题】:Java: remove margin / padding on a JTabbedPaneJava:删除 JTabbedPane 上的边距/填充
【发布时间】:2011-03-03 16:41:23
【问题描述】:

我想知道如何删除我的 JtabbedPane 和我的 JFrame 内容窗格之间以及我的 JTabbedPane 和它的内部 JPanel 之间的边距。 我圈出了要删除的边距。 这里的绿线表示jtabbedpane里面的jpanel之间的间隙。

我试图查看一些名为 setMargin 的方法,但它在 JTabbedPane 上不存在。我还检查了不同布局(根内容窗格、我的 jpanel 等)上的 HgapVgap(两者 = 0)。

欢迎提出任何建议。 谢谢。

.

我还不能发布图片。

【问题讨论】:

  • 你有一个活生生的例子吗?如果您有,请给我们发送链接,我可以解决您的 css 问题。

标签: java swing jtabbedpane margins


【解决方案1】:

由外观决定选项卡式窗格内组件周围的空间大小 - 通常它会根据您桌面的默认设置来执行此操作。 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),您放入其中的组件也是如此。

如果这在您的目标桌面上不起作用,替代方法是

  • 如果您不关心您的选项卡式窗格看起来与本机应用程序选项卡式窗格不同,那么(不愉快的)替代方法是编写您自己的 TabbedPaneUI
  • 将您希望看起来像这样的单个 JTabbedPane 的 UI 委托设置为 MetalTabbedPaneUI 或其他一些确实响应这些属性的 UI 委托

【讨论】:

    【解决方案2】:

    我刚遇到同样的问题,其他人说的似乎都不是一个完整的解决方案,所以我想出了这个:

        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 在调整大小或类似情况时稍微更有效率,因为标准的 UI 似乎委托给了许多其他方法。

    在 WindowMaker 中的适用于 Linux 的 Oracle Java 6 u43、带有 Mac Java 6 u37 的 Mac OS X 10.6.7 和带有 Java 7 u07 的 Windows 7 上进行了测试,希望这对某人有所帮助 :-)

    【讨论】:

    • 虽然这可以去除边框,但它也会改变实际选项卡上的 UI。
    【解决方案3】:

    通过在 UI 元素上设置边框来添加边距。看看你的JTabbedPane的边框设置。

    【讨论】:

    • 感谢您的回答,我可以通过为“right”和“bottom”属性设置负值来移除边框。我觉得这样做有点奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2016-11-19
    • 2015-12-01
    • 2014-04-20
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多