3

图片 JtabbedPane http://img850.imageshack.us/img850/7339/immaginedya.png

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

4

2 回答 2

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>

我通过查看源代码找到了关键的TabbedPaneTabArea 。SynthTabbedPaneUI

加载方式:

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

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

UIManager.setLookAndFeel ( lookAndFeel );


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


Edit2:同样在非 Synth L&Fs 选项卡区域中,插图是使用TabbedPane.tabAreaInsets键从 UIDefaults 中获取的。如果您最终要更改 L&F,这可能会很有用...


总结一下:

  1. 正如我从 Nimbus 源代码中看到的那样 - 您无法在选项卡式窗格中更改此边距
  2. 如果您使用非 Synth L&F,则可以轻松更改此边距
  3. 如果您使用 SynthLookAndFeel 本身,则可以轻松更改此边距
于 2013-05-14T14:59:34.603 回答
1

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

    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);
于 2015-02-18T17:36:36.057 回答