JInternalFrameのタイトルを左寄せに変更する
Total: 2313, Today: 2, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
NimbusLookAndFeelを使用するJInternalFrameのタイトルを左寄せに変更します。
Screenshot

Advertisement
Source Code Examples
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
UIDefaults def = UIManager.getLookAndFeelDefaults();
def.put("InternalFrame:InternalFrameTitlePane.titleAlignment", "LEADING");
View in GitHub: Java, KotlinDescription
上記のサンプルでは、UIDefaultsのInternalFrame:InternalFrameTitlePane.titleAlignmentキーの値を変更することでNimbusLookAndFeelを使用するJInternalFrameのタイトルを変更しています。
- デフォルトは
CENTER TRAILINGで右寄せになるSynthLookAndFeel系でのみ有効JInternalFrame#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)を設定すると、各ボタンと合わせてタイトルの字揃えも逆転するNorthPane#setComponentOrientation(...)は効果がない
- 個別の
JInternalFrameでタイトルの字揃えを変更する場合は、以下のようにJInternalFrame#getUI()で取得したBasicInternalFrameUIからgetNorthPane()でタイトルバーを取得しputClientProperty("Nimbus.Overrides", ...)で上書きする JInternalFrame#putClientProperty(...)は効果がない- この方法でもすべての
JInternalFrameのタイトル字揃えが変更されてしまう場合がある?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
- BasicInternalFrameUI#getNorthPane() (Java Platform SE 8)
- Nimbus Defaults (The Java™ Tutorials > Creating a GUI With Swing > Modifying the Look and Feel)