Есть пара очевидных проблем с кодом, который торчит (кроме форматирования и длинного тела метода).
this.setOpaque(true);
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasocus, row, col);
Вероятно, должно быть
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
c.setOpaque(true);
И вам следуетустановить только передний план для книги, с которой вы имеете дело.
Color redColor = Color.RED;
Color greenColor = Color.GREEN;
//books color
for(int i=0;i<bookCount;i++){
if (library.bookArray[i].getAvailability()==1){
c.setForeground(redColor);
}else{
c.setForeground(greenColor);
}}
Вероятно, должно быть:
c.setForeground(
library.bookArray[row].getAvailability()==1 ?
Color.RED :
Color.GREEN
);
Редактировать: Далее я заметил, что вы установилиПользовательский рендерер по умолчанию для столбцов типа String
, но не установлен Class
для столбцов (типы отдельных ячеек во время выполнения не проверяются, если вы сами не делаете это).Лучше всего позвонить TableColumn.setCellRenderer
для соответствующего столбца TableColumnModel
.