Swing/DisableMetalBumps のバックアップ差分(No.3)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/DisableMetalBumps へ行く。
- 1 (2017-07-31 (月) 20:15:33)
- 2 (2017-12-01 (金) 18:38:59)
- 3 (2018-02-15 (木) 14:23:42)
- 4 (2019-05-22 (水) 19:35:38)
- 5 (2019-07-31 (水) 13:53:13)
- 6 (2021-03-26 (金) 11:46:36)
- 7 (2022-08-01 (月) 14:02:04)
- 8 (2023-08-28 (月) 18:39:39)
- 9 (2023-09-03 (日) 14:50:33)
- 10 (2024-01-24 (水) 23:45:44)
- 11 (2025-01-03 (金) 08:57:02)
- 12 (2025-01-03 (金) 09:01:23)
- 13 (2025-01-03 (金) 09:02:38)
- 14 (2025-01-03 (金) 09:03:21)
- 15 (2025-01-03 (金) 09:04:02)
- 16 (2025-06-19 (木) 12:41:37)
- 17 (2025-06-19 (木) 12:43:47)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: DisableMetalBumps title: MetalLookAndFeelのJInternalFrameタイトルバーでBumpsを非表示にする tags: [JInternalFrame, MetalLookAndFeel, LookAndFeel] author: aterai pubdate: 2017-07-24T15:44:08+09:00 description: MetalLookAndFeelのJInternalFrameでBumpsを非表示にし、フラットなタイトルバーに変更します。 image: https://drive.google.com/uc?export=view&id=1Iy8Oe01o_AOQbIeiuE_pEjfkegKcJuPexQ --- * 概要 [#summary] `MetalLookAndFeel`の`JInternalFrame`で`Bumps`を非表示にし、フラットなタイトルバーに変更します。 #download(https://drive.google.com/uc?export=view&id=1Iy8Oe01o_AOQbIeiuE_pEjfkegKcJuPexQ) * サンプルコード [#sourcecode] #code(link){{ JInternalFrame f1 = new JInternalFrame("basic", true, true, true, true) { @Override public void updateUI() { super.updateUI(); setUI(new BasicInternalFrameUI(this) { @Override protected JComponent createNorthPane(JInternalFrame w) { return new BumpsFreeInternalFrameTitlePane(w); } }); } }; //... class BumpsFreeInternalFrameTitlePane extends BasicInternalFrameTitlePane { protected BumpsFreeInternalFrameTitlePane(JInternalFrame w) { super(w); setBorder(BorderFactory.createMatteBorder( 0, 0, 1, 0, MetalLookAndFeel.getPrimaryControlDarkShadow())); } @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = 24; return d; } @Override public void createButtons() { super.createButtons(); Arrays.asList(closeButton, maxButton, iconButton).forEach(b -> { b.setContentAreaFilled(false); b.setBorder(BorderFactory.createEmptyBorder(2, 5, 2, 5)); }); } } }} * 解説 [#explanation] - `metal(default)` -- デフォルトの`MetalLookAndFeel` - `basic` -- `MetalBumps`クラスはパッケージプライベートなので外部から色などを変更して非表示にするのが難しい -- 代わりに`BasicInternalFrameTitlePane`に`MetalInternalFrameTitlePane`のボタンアイコンや縁などを設定してフラットなタイトルパーを作成 -- 代わりに`BasicInternalFrameTitlePane`に`MetalInternalFrameTitlePane`のボタンアイコンや縁などを設定してフラットなタイトルバーを作成 --- タイトルバーの高さを`BasicInternalFrameTitlePane#getPreferredSize()`メソッドをオーバーライドして設定 --- 閉じるボタンなどの余白設定が効かない? --- フォーカスが無い場合の縁色に未対応 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/metal/MetalInternalFrameTitlePane.html MetalInternalFrameTitlePane (Java Platform SE 8)] * コメント [#comment] #comment #comment