JTabbedPaneのタブエリアに余白を設定する
Total: 2112
, Today: 2
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
JTabbedPane
のタブエリア余白を取得、変更するテストを行います。
Screenshot
![Swing/TabAreaContentMargins screenshot](https://ateraimemo.com/swing/tabareacontentmargins/screenshot.png)
Advertisement
サンプルコード
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
UIDefaults d = UIManager.getLookAndFeelDefaults();
// d.put("TabbedPane:TabbedPaneContent.contentMargins", new Insets(0, 5, 5, 5));
// d.put("TabbedPane:TabbedPaneTab.contentMargins", new Insets(2, 8, 3, 8));
// d.put("TabbedPane:TabbedPaneTabArea.contentMargins", new Insets(3, 10, 4, 10));
Insets i = d.getInsets("TabbedPane:TabbedPaneTabArea.contentMargins");
d.put("TabbedPane:TabbedPaneTabArea.contentMargins", new Insets(i.top, 0, i.bottom, 0));
View in GitHub: Java, Kotlin解説
上記のサンプルでは、NimbusLookAndFeel
を設定したJTabbedPane
のタブエリア余白を設定するテストを行っています。
- 上:
- すべての
JTabbedPane
のタブエリア左右の余白を0
にして除去 UIManager.getLookAndFeelDefaults()
で取得したUIDefaults
にUIDefaults#put("TabbedPane:TabbedPaneTabArea.contentMargins", new Insets(i.top, 0, i.bottom, 0))
ですべてのJTabbedPane
のタブエリアの余白を上書き
- すべての
- 下:
- 指定した
JTabbedPane
のタブエリア左右の余白を30
に拡大 new UIDefaults()
で生成したUIDefaults
にUIDefaults#put("TabbedPane:TabbedPaneTabArea.contentMargins", new Insets(3, 30, 4, 30))
でタブエリアの余白を設定し、putClientProperty("Nimbus.Overrides", d)
メソッドで特定のJTabbedPane
のタブエリア余白を上書きUIDefaults d = new UIDefaults(); d.put("TabbedPane:TabbedPaneTabArea.contentMargins", new Insets(3, 30, 4, 30)); tabbedPane.putClientProperty("Nimbus.Overrides", d); tabbedPane.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
- 指定した
MetalLookAndFeel
やWindowsLookAndFeel
などでタブエリア余白を設定する場合は、UIManager.put("TabbedPane.tabAreaInsets", new Insets(...))
が使用可能LookAndFeel
によってタブエリアの余白を取得可能な方法が異なるので注意が必要// MetalLookAndFeelなどではnullになる // UIDefaults d = UIManager.getLookAndFeelDefaults(); // Insets i = d.getInsets("TabbedPane:TabbedPaneTabArea.contentMargins"); // NimbusLookAndFeelなどではnullになる Insets insets = UIManager.getInsets("TabbedPane.tabAreaInsets"); if (Objects.nonNull(insets)) { return insets; } else { // MetalLookAndFeelなどでは使用できない SynthStyle style = SynthLookAndFeel.getStyle(this, Region.TABBED_PANE_TAB_AREA); SynthContext context = new SynthContext(this, Region.TABBED_PANE_TAB_AREA, style, SynthConstants.ENABLED); return style.getInsets(context, null); }