JOptionPaneで使用するボタンのサイズを揃える
Total: 6017, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
NimbusLookAndFeelでJOptionPaneを使用した場合、そのJButtonのサイズを揃えるかどうかを設定します。java - JOptionPane button size (Nimbus LAF) - Stack Overflowの回答を参考にしています。
Screenshot

Advertisement
Source Code Examples
UIManager.getLookAndFeelDefaults().put("OptionPane.sameSizeButtons", true);
View in GitHub: Java, KotlinDescription
default- デフォルトの
NimbusLookAndFeelでJOptionPaneが使用するJButtonのサイズは各ボタンのテキストの長さに依存する
- デフォルトの
SameSizeButtonsUIManager.getLookAndFeelDefaults().put("OptionPane.sameSizeButtons", true)で最も長いボタンテキストから作成されるJButtonのサイズに揃えられるOptionPane.sameSizeButtonsの設定はLookAndFeelに依存し、たとえばMetalLookAndFeelではOptionPane.sameSizeButtonsの設定を無視してJOptionPaneのボタンは常に同じサイズになる- このサンプルでは実行中にこれらを切り替えるテストを行うために
UIManager.getLookAndFeelDefaults()で取得したUIDefaultsではなく、以下のように新規作成したUIDefaultsにOptionPane.sameSizeButtonsを設定してJOptionPaneに上書きしSwingUtilities.updateComponentTreeUI(JOptionPane)でUIを更新している(OptionPane.buttonAreaBorderでテスト)UIDefaults d = new UIDefaults(); d.put("OptionPane.sameSizeButtons", true); op.putClientProperty("Nimbus.Overrides", d); op.putClientProperty("Nimbus.Overrides.InheritDefaults", true); SwingUtilities.updateComponentTreeUI(op); op.createDialog(getRootPane(), "title").setVisible(true);
Reference
- java - JOptionPane button size (Nimbus LAF) - Stack Overflow
- SynthLookAndFeelでのコンポーネント固有のプロパティ
- Nimbusの外観をUIDefaultsで変更する
- JButtonなどの高さを変更せずに幅を指定