Swing/TabAreaContentMargins のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TabAreaContentMargins へ行く。
- 1 (2018-12-26 (水) 17:36:04)
- 2 (2019-07-29 (月) 02:31:12)
- 3 (2020-11-20 (金) 10:37:29)
- 4 (2023-01-06 (金) 17:30:44)
- category: swing folder: TabAreaContentMargins title: JTabbedPaneのタブエリアに余白を設定する tags: [JTabbedPane, NimbusLookAndFeel] author: aterai pubdate: 2018-09-24T22:51:27+09:00 description: JTabbedPaneのタブエリア余白を取得、変更するテストを行います。 image: https://drive.google.com/uc?export=view&id=1WORPot3oeRdnLbFIDh6BcBmJpFVrLASoOw
概要
JTabbedPane
のタブエリア余白を取得、変更するテストを行います。
Screenshot
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); }