У меня есть JTable, где я хочу выделить несколько строк, используя собственный цвет фона. Это я сделал со следующим классом:
public class MyTable extends JTable {
private List<RefData> data = null;
public List<RefData> getData() {
return data;
}
public void setData(List<RefData> data) {
this.data = data;
}
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component comp = super.prepareRenderer(renderer, row, column);
if (this.data == null || row < 0 || row > this.data.size()-1){
return comp;
}
RefData rowData = this.data.get(row);
if (rowData.getStatus() < 3000){
comp.setBackground(Color.YELLOW);
} else {
comp.setBackground(Color.WHITE);
}
return comp;
}
}
Все это работает как шарм, и я получаю именно то, что хочу. Затем, глядя на полученный графический интерфейс, я понимаю, что таблица выглядит слишком сжатой. Все выглядит сжато вместе. Как всегда с настройками JTable по умолчанию;)
Ну, это легко решить, я подумал:
myTable.setIntercellSpacing(new java.awt.Dimension(10, 1));
Теперь ячейки хорошо расположены , но , добавленные поля ячеек теперь имеют цвет фона таблицы по умолчанию, который в моем случае белый. Это выглядит ужасно.
Я предполагаю, что межсотовый интервал добавляет интервал между границей ячейки и компонентом, возвращаемым prepareRenderer. Это объяснило бы результат. Но как мне заставить его изменить фон самой ячейки?
Мое prepareRenderer
решение не подходит для этой задачи? Или есть другое решение?