Image JtabbedPane http://img850.imageshack.us/img850/7339/immaginedya.png
如何删除JTabbedPane
的选定边距? :(
答案 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 :(得分: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);