Swing/InternalFrameTitleAlignment のバックアップ差分(No.2)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/InternalFrameTitleAlignment へ行く。
- 1 (2018-01-08 (月) 21:17:52)
- 2 (2018-02-15 (木) 14:23:42)
- 3 (2020-01-02 (木) 19:29:03)
- 4 (2021-07-04 (日) 12:52:29)
- 5 (2024-02-28 (水) 21:57:19)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: InternalFrameTitleAlignment title: JInternalFrameのタイトルを左寄せに変更する tags: [JInternalFrame, NimbusLookAndFeel] tags: [JInternalFrame, NimbusLookAndFeel, LookAndFeel] author: aterai pubdate: 2018-01-08T21:07:11+09:00 description: NimbusLookAndFeelを使用するJInternalFrameのタイトルを左寄せに変更します。 image: https://drive.google.com/uc?export=view&id=1pc7-91VPZY42IsKoQuMfcpg0I90siJvvlQ --- * 概要 [#summary] `NimbusLookAndFeel`を使用する`JInternalFrame`のタイトルを左寄せに変更します。 #download(https://drive.google.com/uc?export=view&id=1pc7-91VPZY42IsKoQuMfcpg0I90siJvvlQ) * サンプルコード [#sourcecode] #code(link){{ UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); UIDefaults def = UIManager.getLookAndFeelDefaults(); def.put("InternalFrame:InternalFrameTitlePane.titleAlignment", "LEADING"); }} * 解説 [#explanation] 上記のサンプルでは、`UIDefaults`の`InternalFrame:InternalFrameTitlePane.titleAlignment`キーの値を変更することで`NimbusLookAndFeel`を使用する`JInternalFrame`のタイトルを変更しています。 - メモ -- `TRAILING`で右寄せになる -- `SynthLookAndFeel`系でのみ有効 -- `JInternalFrame#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)`を設定すると、各ボタンと合わせて、タイトルの字揃えも逆転する --- `NorthPane#setComponentOrientation(...)`は効果がない -- 個別の`JInternalFrame`でタイトルの字揃えを変更する場合は、以下のように`JInternalFrame#getUI()`で取得した`BasicInternalFrameUI`から`getNorthPane()`でタイトルバーを取得し、`putClientProperty("Nimbus.Overrides", ...)`で上書きする -- `JInternalFrame#putClientProperty(...)`は効果がない -- この方法でもすべての`JInternalFrame`のタイトル字揃えが変更されてしまう場合がある? #code{{ JInternalFrame frame = new JInternalFrame("title", true, true, true, true); BasicInternalFrameUI ui = (BasicInternalFrameUI) frame.getUI(); JComponent titleBar = (JComponent) ui.getNorthPane(); UIDefaults d = new UIDefaults(); String titleAlignment = idx == 0 ? "CENTER" : "LEADING"; d.put("InternalFrame:InternalFrameTitlePane.titleAlignment", titleAlignment); titleBar.putClientProperty("Nimbus.Overrides", d); }} * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/basic/BasicInternalFrameUI.html#getNorthPane-- BasicInternalFrameUI#getNorthPane() (Java Platform SE 8)] * コメント [#comment] #comment #comment