У меня есть рендерер ячеек с простым ишем, который состоит из нескольких JLabel
s (сам рендерер расширяет JPanel
), и я пытаюсь заставить его визуально отображаться в стиле Nimbus. В основном происходит то, что в светлых строках (так как Nimbus имеет альтернативную окраску строк ), мой специфический рендерер ячеек использует цвет фона таблицы (который намного темнее, чем и светлее, и более темные ряд цветов). В моем рендерере я делаю:
if (isSelected) {
setBackground(table.getSelectionBackground);
}
else {
setBackground(table.getBackground);
}
Если я закомментирую весь этот блок кода, тогда все мои строки будут иметь более темный ряд цвет (не фон таблицы, но также не в альтернативных цветах). Я не уверен, что даже понимаю, что может происходить! Как приведенный выше фрагмент кода создает ячейки с разными цветами фона? Меняется ли цвет table.getBackground
между вызовами моего метода?
Я пытался использовать этот фрагмент кода:
Color alternateColor = sun.swing.DefaultLookup.getColor(
peer,
peer.getUI,
"Table.alternateRowColor");
if (alternateColor != null && row % 2 == 0)
setBackground(alternateColor);
Который из класса DefaultTableCellRenderer
. И это, похоже, никак не влияет. У кого-нибудь есть кастомизаторы, работающие с Nimbus?
РЕДАКТИРОВАТЬ : Если кому-то интересно, это оказалось проблемой с Scala средствами визуализации ячеек таблицы, поскольку я фактически использовал Scala, а не Java. Принятый ответ ниже прекрасно работает в Java-программе. Отдельный вопрос подан здесь .