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