删除JTabbedPane的空间/边界/边距

时间:2013-05-14 14:27:40

标签: java swing border jtabbedpane nimbus

Image JtabbedPane http://img850.imageshack.us/img850/7339/immaginedya.png

如何删除JTabbedPane的选定边距? :(

2 个答案:

答案 0 :(得分:2)

由于Nimbus L& F基于Synth L& F,我猜您必须为选项卡式窗格选项卡区域加载自定义Synth样式,并指定自定义插入(在您的情况下使用较小的左/右插入)。

你可以在这里阅读关于样式合成器: http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/synth.html

我想那个样式文件(您可以将其命名为 - 例如 style.xml )应该如下所示:

<synth>
    <style id="tabAreaStyle">
        <insets top="0" left="0" right="0" bottom="0" />
    </style>
    <bind style="tabAreaStyle" type="region" key="TabbedPaneTabArea" />
</synth>

我通过查看SynthTabbedPaneUI源代码找到了密钥 TabbedPaneTabArea

加载方式:

final NimbusLookAndFeel lookAndFeel = new NimbusLookAndFeel ();
lookAndFeel.load ( MyClass.class.getResource ( "style.xml" ) );

然后你可以使用那个L&amp; F:

UIManager.setLookAndFeel ( lookAndFeel );


Edit1:我刚检查过 - 这种方式只适用于SynthLookAndFeel,NimbusLookAndFeel似乎是最终的,无论如何都无法重新设置样式。 Nimbus画家拥有硬编码值(包括您想要更改的标签区域插图)。


Edit2:同样在非Synth L&amp; Fs标签区域中,使用 TabbedPane.tabAreaInsets 键从UIDefaults获取插件。如果你最后要改变L&amp; F,那么这可能很有用......


总结:

  1. 正如我从Nimbus源代码中看到的那样 - 您无法在选项卡式窗格中更改此边距
  2. 如果您使用非Synth L&amp; F
  3. ,则可以轻松更改此保证金
  4. 如果您使用SynthLookAndFeel本身
  5. ,则可以轻松更改此边距

答案 1 :(得分:1)

使用它来禁用整个应用中的边距,或者不使用&#39; .getDefaults()&#39;在创建新的选项卡式窗格之前。

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