Swing/SameSizeButtons の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/SameSizeButtons へ行く。
- Swing/SameSizeButtons の差分を削除
--- category: swing folder: SameSizeButtons title: JOptionPaneで使用するボタンのサイズを揃える tags: [JOptionPane, JButton, UIManager, NimbusLookAndFeel] author: aterai pubdate: 2015-05-11T00:39:58+09:00 description: NimbusLookAndFeelでJOptionPaneを使用した場合、そのJButtonのサイズを揃えるかどうかを設定します。 image: https://lh3.googleusercontent.com/-vidT_rr0mcE/VU97kF6HGpI/AAAAAAAAN4A/ByrWGh41AQg/s800/SameSizeButtons.png --- * 概要 [#summary] `NimbusLookAndFeel`で`JOptionPane`を使用した場合、その`JButton`のサイズを揃えるかどうかを設定します。[https://stackoverflow.com/questions/30138984/joptionpane-button-size-nimbus-laf java - JOptionPane button size (Nimbus LAF) - Stack Overflow]の回答を参考にしています。 #download(https://lh3.googleusercontent.com/-vidT_rr0mcE/VU97kF6HGpI/AAAAAAAAN4A/ByrWGh41AQg/s800/SameSizeButtons.png) * サンプルコード [#sourcecode] #code(link){{ UIManager.getLookAndFeelDefaults().put("OptionPane.sameSizeButtons", true); }} * 解説 [#explanation] - `default` -- デフォルトの`NimbusLookAndFeel`で`JOptionPane`が使用する`JButton`のサイズは、各ボタンのテキストの長さに依存する -- デフォルトの`NimbusLookAndFeel`で`JOptionPane`が使用する`JButton`のサイズは各ボタンのテキストの長さに依存する - `SameSizeButtons` -- `UIManager.getLookAndFeelDefaults().put("OptionPane.sameSizeButtons", true)`で、最も長いボタンテキストから作成される`JButton`のサイズに揃えられる -- `UIManager.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`でテスト) -- このサンプルでは実行中にこれらを切り替えるテストを行うために`UIManager.getLookAndFeelDefaults()`で取得した`UIDefaults`ではなく、以下のように新規作成した`UIDefaults`に`OptionPane.sameSizeButtons`を設定して`JOptionPane`に上書きし`SwingUtilities.updateComponentTreeUI(JOptionPane)`で`UI`を更新している(`OptionPane.buttonAreaBorder`でテスト) #code{{ 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] - [https://stackoverflow.com/questions/30138984/joptionpane-button-size-nimbus-laf java - JOptionPane button size (Nimbus LAF) - Stack Overflow] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html SynthLookAndFeelでのコンポーネント固有のプロパティ] - [[Nimbusの外観をUIDefaultsで変更する>Swing/UIDefaultsOverrides]] - [[JButtonなどの高さを変更せずに幅を指定>Swing/ButtonWidth]] * コメント [#comment] #comment #comment