Mam niestandardowy obiekt ListCellRenderer i chciałbym użyć domyślnego koloru backround wyboru Nimbus. Mogę wyszukiwania kolor z:Jak używać domyślnego koloru Nimbus z UIManager?
Color selectionBackground = UIManager.getColor("nimbusSelectionBackground");
i gdybym go wydrukować, to ma takie same wartości jak na Nimbus default colors. Ale kiedy używam go na JPanelu, otrzymuję inny szary kolor, jak mogę użyć koloru z UIManager?
Kiedy zrobić:
setBackground(Color.RED);
backround JPanels jest wyświetlana na czerwono, ale kiedy zrobić:
setBackground(selectionBackground);
W "selectionBackground" kolor jest nie używane, ale szary kolor .
Oto przykład i zrzut ekranu:
Tło powinno być:
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);
}
}
Czy to możliwe, że następujące pytanie może ci pomóc w Nimbus - http://stackoverflow.com/questions/5840599/jbutton-background-on-nimbus-laf? –
Wow, bardzo dziwne. Sprawdziłem kod: zwracany kolor jest typu javax.swing.plaf.ColorUIResource. Ale nie widzę, jak to może spowodować problem, ponieważ jest to podklasa koloru. W kodzie ColorUIResource nie ma nic szczególnego, nie ma odniesienia do interfejsu użytkownika ani nic takiego. Jak sugerował Joey, 'selectionBackground = new Color (selectionBackground.getRGB());' działa. – toto2