1

アイコンが付いた JButton があります。JButton の背景色をアイコンと同じにしたい。

次のコードは、標準のルック アンド フィールで正常に動作します。

button.setBackground(new Color(212,208,199));

しかし、ルック アンド フィールを Nimbus に変更すると、JButton の背景色がはるかに明るくなります。

button.setBackground() で色を変更すると、JButton の背景色も変更されますが、Nimbus で JButton の背景色と同じ色を取得するために必要な色がわかりません。もちろん、すべての値を試して色を目で見ようとすることもできますが、もっと簡単な方法があるはずです。

また、次のコードを使用して背景色を変更しようとしましたが、結果は同じでした:

UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("Button.background",new Color(212,208,199));

Nimbus で JButton の背景色を変更して、含まれているアイコンの背景色とマージするにはどうすればよいですか?

以下は、デフォルトの LaF、ニンバス LaF (同じコード)、およびニンバス LaF (赤色) のボタンの写真です。

デフォルトの LaF、以下を使用button.setBackground(new Color(212,208,199)):

ここに画像の説明を入力

ニンバスLaF、使用button.setBackground(new Color(212,208,199))

ここに画像の説明を入力

ニンバスLaF、使用button.setBackground(Color.red)

ここに画像の説明を入力

4

4 に答える 4

3
  1. 代わりにTable.background使用する理由を教えてくださいButton.background

  2. NimbusDefaultを表示するためのその他のキー

  3. ニンバスのJButtonの背景についての詳細

  4. 多分???(説明からはわかりません)、おそらく背景を変更する理由はないので、JButtonsAPIを確認する必要があります

メソッド

 JButton.setBorderPainted(false);
 JButton.setBorder(null);
 JButton.setFocusable(false);
 JButton.setMargin(new Insets(0, 0, 0, 0));
 JButton.setContentAreaFilled(false);
 JButton.setIcon(someIcon);
 JButton.setRolloverIcon(someIcon);
 JButton.setPressedIcon(someIcon);
 JButton.setDisabledIcon(someIcon);
于 2013-02-19T16:06:34.063 に答える
0

ニンバスが setBackground() の結果を変更する理由を知りたいので、質問はまだ私を熟考しています...ニンバスが何らかのカラーマスクを適用すると仮定します。これにより、色がわずかにわずかに変化しますか?

しかし:私のプロジェクトでは、ボタンはすべて別のJPanelにあり、ニンバスLaFを必要とするJpanelにはボタンがないため、ボタンJPanelにデフォルトのLaFを使用して問題を解決し、ニンバスLaFのみを使用しました私が必要とするJPanelsで。

申し訳ありませんが、これまで考えたことはありませんでした (どういうわけか、LaF はプロジェクト全体に適用する必要があると思い込んでいました)。

それで問題は解決しましたが、まだニンバスの色の扱いについての答えに興味があります....

于 2013-02-20T06:57:42.883 に答える