Изменить цвета фона ячейки JTable - PullRequest
1 голос
/ 28 июня 2011

Хорошо, это продолжение моего последнего вопроса: JTable: изменение фона ячейки при нажатии кнопки Теперь я могу изменить цвет фона выбранных ячеек в JTable с помощью параметра isSelected, но я не могу понять логику, чтобы заставить средство визуализации ячеек устанавливать фоны определенных ячеек каждый раз, когда он отображает.

По сути, я хочу выделить несколько ячеек, нажать кнопку, изменить цвет фона выделенных ячеек и оставить его таким же после того, как я отменил выбор ячейки (без воздействия на невыбранные ячейки).

Кажется, это такая простая проблема, но я совершенно туп на том, как это сделать.

Как всегда, любой вклад приветствуется.

Ответы [ 2 ]

4 голосов
/ 28 июня 2011

Вам нужно будет хранить информацию о том, какие ячейки выделены и какой фон нужен.Тогда ваш CellRenderer должен будет обратиться к этой информации при принятии решения, какой цвет использовать для фона.

Базовая логика для рендерера:

  • Если выбран выбран, используется выбранный цвет
  • Если в ячейке отмечен цвет фона
  • Во всех остальных случаях используйте обычный цвет фона
2 голосов
/ 28 июня 2011

Вы должны передать сложный объект, содержащий цвет, в качестве значения ячейки.

Нажатие кнопки должно обновить цвет объекта для выбранных объектов (для выбранных ячеек в вашем случае). Ваш рендерер должен использовать цвет этого значения для заливки фона.

После изменения цвета объекта вызовите table.cellChanged () (не помню название метода) для запуска перерисовки.

class CellValue {
 public Color color;
 public String text; 
}

...
//renderer
getCellRendererComponent(...) {
  JLabel l = super.getCellRendererComponent(...);
  CellValue v = (CellValue) value;
  l.setBackgroundColor(v.color);
}

Нечто подобное

...