私はカスタムのListCellRendererを持っており、デフォルトのNimbus選択のバックラウンドカラーを使用したいと考えています。私は色を検索することができますUIManagerでデフォルトのNimbusカラーを使用するにはどうすればよいですか?
Color selectionBackground = UIManager.getColor("nimbusSelectionBackground");
と私はそれを印刷する場合、それはNimbus default colors上と同じ値を持っています。しかし、私がJPanelでそれを使用するとき、私は異なる灰色を取得しました。どのようにUIManagerの色を使用できますか?
setBackground(Color.RED);
のJPanelのbackroundのが赤で示されているが、私は場合:
setBackground(selectionBackground);
"selectionBackground" 色がが使用されていないが、グレー色私は
。背景があるべき
:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
public class PanelColor {
public static void main(String[] args) {
// switch to Nimbus Look And Feel
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
try {
UIManager.setLookAndFeel(info.getClassName());
} catch (Exception e) { e.printStackTrace(); }
break;
}
}
Color selectionBackground = UIManager.getColor("nimbusSelectionBackground");
JPanel panel = new JPanel(new BorderLayout());
panel.setPreferredSize(new Dimension(300,50));
panel.add(new JLabel(selectionBackground.toString()), BorderLayout.NORTH);
// is not showing the selectionBackground color
panel.setBackground(selectionBackground);
JFrame frame = new JFrame();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
次の質問はNimbusのお手伝いをすることができますか? - http://stackoverflow.com/questions/5840599/jbutton-background-on-nimbus-laf? –
うわー、非常に奇妙です。私はコードをチェックしました:返される色はjavax.swing.plaf.ColorUIResource型です。しかし、Colorのサブクラスなので、どのように問題が発生するかわかりません。 ColorUIResourceのコードには何も特別なものはなく、UIなどの参照はありません。 Joeyが示唆したように、 'selectionBackground = new Color(selectionBackground.getRGB());'が機能します。 – toto2