J'ai un rendu de cellule simple qui est composé de quelques JLabel
s (le moteur de rendu lui-même étend JPanel
) et j'essaye de le rendre raisonnablement dans le regard de Nimbus et ressentez. Fondamentalement ce qui se passe est que dans briquet lignes (comme Nimbus a coloration de rang alternatif), mon moteur de rendu de cellule spécifique utilise la couleur d'arrière-plan de la table (qui est beaucoup plus sombre que les couleurs plus sombres). Dans mon renderer je fais:Conception de rendu de cellule simple pour l'aspect et la convivialité de Nimbus
if (isSelected) {
setBackground(table.getSelectionBackground);
}
else {
setBackground(table.getBackground);
}
Si je commente ce bloc tout le code est interrompu, alors toutes mes lignes sont dans la plus sombre ligne couleur (pas d'arrière-plan de la table, mais pas dans des couleurs alternatives non plus). Je ne suis pas sûr de comprendre ce qui peut se passer! Comment l'extrait de code ci-dessus produit-il des cellules avec des couleurs de fond différentes? La couleur table.getBackground
change-t-elle entre les invocations de ma méthode?
J'ai essayé d'utiliser ce bout de code:
Color alternateColor = sun.swing.DefaultLookup.getColor(
peer,
peer.getUI,
"Table.alternateRowColor");
if (alternateColor != null && row % 2 == 0)
setBackground(alternateColor);
Ce qui est dans la classe DefaultTableCellRenderer
. Et cela ne semble pas avoir d'effet du tout. Quelqu'un a-t-il des robots de rendu de cellules personnalisés fonctionnant avec Nimbus?
EDIT: Si quelqu'un est intéressé, cela se révèle être un problème avec Scala CellRenderer de table, comme je l'utilisais en fait Scala, pas Java. La réponse acceptée ci-dessous fonctionne très bien dans un programme Java. Question distincte classée here.
Oui - c'est * exactement * ce que j'ai essayé et cela n'a pas fonctionné. Cependant, je suis en train d'utiliser Scala, pas Java, alors j'ai décidé de lancer un test rapide en Java et cela a fonctionné. Donc merci. Malheureusement, je ne sais pas pourquoi cela ne fonctionne pas dans Scala! –
Même si je ne connais pas grand-chose à Scala, je ne vois pas pourquoi cela ne devrait pas fonctionner. Swing Swing, même à Scala. –
C'est en fait 'if (row% 2 == 1) {'. – cimnine