1

Nimbus LAF を使用しており、シンプルな背景を変更したいと考えていますJButton

JButton jbutton = new JButton("test");
jbutton.setBackground(Color.BLACK);

ルック アンド フィールを変更すると動作しますが、Nimbus では動作しません。

どうすればできますか?

ご協力いただきありがとうございます。

4

1 に答える 1

7

Nimbus は Painter を使用してさまざまなスタイルを描画します。デフォルトでは、ボタンには単一の色ではなくグラデーションがあります。ボタンを参照してください: Nimbus デフォルト リスト

独自の Painter を記述して、デフォルトをオーバーライドできます。または、キー「Button.background」で背景色を上書きし、デフォルト ペインターを使用します。

UIDefaults overrides = new UIDefaults();
overrides.put("Button.background", Color.RED);
jbutton.putClientProperty("Nimbus.Overrides", overrides);
jbutton.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE);
SwingUtilities.updateComponentTreeUI(jbutton);

または、すべてのボタンの色を変更したい場合は、次を試してください。

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("Button.background",  Color.RED);

ところで。この色を変更すると、JButton は Nimbus のデフォルト キー「nimbusBase」に基づきます。

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put( "nimbusBase", Color.RED );

次に、ボタンだけでなく、ニンバスのデフォルト ブルーまたはセカンダリ カラーを使用するすべてのものを新しい色に変更します。

Nimbus Default Color をすべてのコンポーネントに変更する効果を示すことができる素敵な Nimbus Theme Creator を見つけました: http://aephyr.googlecode.com/svn/trunk

于 2011-05-02T12:41:05.497 に答える