Tengo un ListCellRenderer personalizado y me gustaría utilizar el color de fondo de selección predeterminado de Nimbus. Puedo buscar el color con el:¿Cómo uso un color Nimbus predeterminado con UIManager?
Color selectionBackground = UIManager.getColor("nimbusSelectionBackground");
y si lo imprimo, que tiene los mismos valores que en Nimbus default colors. Pero cuando lo uso en un JPanel obtengo un color gris diferente, ¿cómo puedo usar el color de UIManager?
Cuando hago:
setBackground(Color.RED);
El apaisada JPanels se muestra en rojo, pero cuando lo hago:
setBackground(selectionBackground);
El color "selectionBackground" es no utilizado, pero un color gris .
Aquí es un ejemplo y captura de pantalla:
El fondo debe ser:
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);
}
}
¿Es posible que la siguiente pregunta lo ayude con Nimbus - http://stackoverflow.com/questions/5840599/jbutton-background-on-nimbus-laf? –
Guau, muy extraño. Revisé el código: el color devuelto es del tipo javax.swing.plaf.ColorUIResource. Pero no veo cómo eso puede causar ningún problema ya que es una subclase de Color. No hay nada especial en el código de ColorUIResource, ninguna referencia a la interfaz de usuario ni nada. Como sugirió Joey, 'selectionBackground = new Color (selectionBackground.getRGB());' funciona. – toto2