Как выделить жирным шрифтом или цветом строку JTable, содержащую определенный текст, во время выполнения в Java

У меня есть JTable, который извлекает и показывает данные из базы данных.

Данные шоу в JTable следующие: введите здесь описание изображения

на изображении выше во 2-м столбце много TOTAL, а в 1-м столбце Grand Total. Мой вопрос: я хочу, чтобы столбец, содержащий столбцы TOTAL и Grand Total, вся строка должна быть жирной или любого цвета фона, чтобы сделать его более конкретным.

Пожалуйста помоги


person Intact Abode    schedule 03.05.2017    source источник
comment
Вам нужен TableCellRenderer, способный на это. Средства, с помощью которых вы в конечном итоге реализуете это, будут сводиться к структуре данных, поскольку каждая ячейка должна иметь возможность определять, должна ли она быть жирной или нет, на основе статуса первых двух столбцов.   -  person MadProgrammer    schedule 03.05.2017
comment
docs.oracle.com/javase/tutorial/uiswing/components/   -  person JB Nizet    schedule 03.05.2017
comment
для приведения значения String из столбца (представление может возвращать объект) и с помощью prepareRenderer   -  person mKorbel    schedule 03.05.2017


Ответы (1)


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

Однако я не вижу смысла использовать строки для всех данных. Я вижу много столбцов с числами, как целыми, так и двойными значениями. В этих столбцах данные должны храниться как Integer и Double, поэтому для отображения данных можно использовать соответствующий модуль визуализации.

В этом случае вам теперь нужно будет создать несколько средств визуализации, чтобы выделить строки данных.

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

Ознакомьтесь с рендерингом строки таблицы, чтобы найти рабочие примеры этого подхода. .

person camickr    schedule 03.05.2017