Как изменить цвет фона первой ячейки в JTable?

#java #swing #jtable

#java #качать #jtable

Вопрос:

Все в порядке?

У меня есть следующая таблица в моем Java-приложении. По статусу он придает строке определенный цвет, как я покажу в коде ниже.

Я хочу, чтобы был окрашен только первый столбец, остальные хотят отображаться с цветом по умолчанию.

 public class PriorityCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);

    //if (Integer.valueOf(1).equals(table.getValueAt(row, 1)) amp;amp; 0 == column)   amp;amp; 9 < column)
    if (String.valueOf(1).equals(table.getValueAt(row, 0))) {
        setForeground(Color.BLUE);  // or background
    }
    if (String.valueOf(2).equals(table.getValueAt(row, 0))) {
        setForeground(Color.GREEN);  // or background
    }
    if (String.valueOf(3).equals(table.getValueAt(row, 0))) {
        setForeground(Color.YELLOW);  // or background
    }
    if (String.valueOf(4).equals(table.getValueAt(row, 0))) {
        setForeground(Color.RED);  // or background
    }
    return this;
} 
}
  

введите описание изображения здесь

Понял мой вопрос?

Кто-нибудь может мне помочь, пожалуйста?

Большое вам спасибо.

Комментарии:

1. удалить другие ifs?

2. Это должно быть: if (0 == column) setBackground(Color.RED)

3. Спасибо всем за ответ. Я попробовал это: if (String.valueOf(1).equals(table.getValueAt(row, 0))amp;amp; column == 0) { setForeground(Color.BLUE); } Но результат тот же.

Ответ №1:

  1. Установите пользовательский рендеринг для целевого столбца:

     table.getColumnModel().getColumn(COLUMN_INDEX).setCellRenderer(new PriorityCellRenderer());
      
  2. в getTableCellRendererComponent() проверке индекса столбца if(column == COLUMN_INDEX)

Комментарии:

1. Спасибо за вашу помощь, сэр 🙂

2. опубликованный код, описанный qeustion — это задание для prepareRenderer()

3. @mKorbel, вы правы, это можно сделать prepareRenderer() методом JTable