#java #colors #row #cell
#java #Цвет #строка #ячейка
Вопрос:
Я использую этот код в jtable, настраиваю код при создании пользовательских настроек, но моя выбранная строка не изменилась, пожалуйста, помогите мне решить эту проблему
jtablexml = new javax.swing.JTable(){
public Component prepareRenderer ( TableCellRenderer renderer, int row, int column ){
Component component = super.prepareRenderer(renderer,row,column);
Object value = getModel().getValueAt(row,column);
if(value.equals(null)){
component.setBackground(Color.RED);
component.setForeground(Color.BLACK); }
else{
component.setBackground(Color.WHITE);
component.setForeground(Color.BLACK); }
jtablexml.setSelectionBackground(Color.GREEN);
return component; }
};
Комментарии:
1. Вы не можете вызвать метод для нулевого объекта. Для проверки на null вы используете:
if (value == null)
Ответ №1:
но моя выбранная строка не изменилась
Ваша логика переопределяет выбор строки по умолчанию.
Вам нужна дополнительная проверка, чтобы убедиться, что строка не выделена по умолчанию:
Component component = super.prepareRenderer(renderer,row,column);
if (!isRowSelected(row))
{
// add custom highlighting here
}
return component;
Другие примеры рендеринга строк см. в разделе Рендеринг строк таблицы.
Кроме того, не пытайтесь изменить свойство таблицы в средстве визуализации.
Комментарии:
1. почему я говорю, что не работает, и я вижу эту проблему
** if(value.equals(null)){component.setForeground(Color.red);} **
java.lang.NullPointerException