JInternalFrameのタイトルを左寄せに変更する
Total: 1830
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
を使用するJInternalFrame
のタイトルを左寄せに変更します。
Screenshot
Advertisement
サンプルコード
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
UIDefaults def = UIManager.getLookAndFeelDefaults();
def.put("InternalFrame:InternalFrameTitlePane.titleAlignment", "LEADING");
View in GitHub: Java, Kotlin解説
上記のサンプルでは、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);
参考リンク
- BasicInternalFrameUI#getNorthPane() (Java Platform SE 8)
- Nimbus Defaults (The Java™ Tutorials > Creating a GUI With Swing > Modifying the Look and Feel)