我有一個名爲sponsorIndexArr的inint數組,它包含我想要更改表格顏色的單元格索引(我也希望使該單元格不可選)。該表是一列,所以我只需要單元格的行索引。Java - 更改JTable中某些單元格的顏色
下面是一些相關的代碼:
// Configure sponsor table
sponsorstableModel = new DefaultTableModel(sponsorsTableList, new String[]{"Sponsors"}
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
sponsorsTable = new JTable(sponsorstableModel);
sponsorsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
sponsorsTable.addMouseListener(this);
sponsorsTable.setDefaultRenderer(Object.class, new 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);
for (int entry : sponsorIndexArr) {
System.out.println(entry + " " + row);
if (entry == row) {
System.out.println("HERE");
this.setBackground(Color.CYAN);
this.setEnabled(false);
} else {
setBackground(null);
this.setEnabled(true);
}
}
return this;
}
});
程序在正確的位置打印 「HERE」。但是,發生的情況是隻有具有最後索引sponsorIndexArr的單元正在改變顏色。當我擺脫setBackground(null)
然後每個細胞變成青色。
此外,當我選擇任何其他單元格背景覆蓋文本。當我擺脫this.setEnabled(true)
然後我沒有這個問題,但隨後每個單元格被禁用(文本變灰)。
參見[*臭名昭著的彩色記憶™*](http://stackoverflow.com/a/9617446/230513)。 – trashgod