У меня есть собственный ListCellRenderer, и я хотел бы использовать цвет фона Nimbus для выбора по умолчанию. Я могу найти цвет с:
Color selectionBackground = UIManager.getColor("nimbusSelectionBackground");
, и если я его распечатаю, он имеет те же значения, что и для Цвета по умолчанию Nimbus . Но когда я использую его на JPanel, я получаю другой серый цвет, как я могу использовать цвет из UIManager?
Когда я делаю:
setBackground(Color.RED);
Фон JPanels отображается красным, но когда я это делаю:
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);
}
}