我根据特定条件更改JTable
中单元格的背景颜色。为此,我要覆盖Component
。颜色可以正常工作,但是在选择单元格之前,整个行都会突出显示,但现在只显示单元格被选中。如何启用行选择?
代码
JTable table = new JTable(model){
@Override
public Component prepareRenderer(TableCellRenderer renderer, int rowIndex,
int columnIndex) {
JComponent component = (JComponent) super.prepareRenderer(renderer, rowIndex, columnIndex);
if(getValueAt(rowIndex, 0).toString().equalsIgnoreCase("cancel") && columnIndex == 0) {
component.setBackground(Color.RED);
} else if(getValueAt(rowIndex, 0).toString().equalsIgnoreCase("new") && columnIndex == 0){
component.setBackground(Color.GREEN);
}
else if(getValueAt(rowIndex, 0).toString().equalsIgnoreCase("trade") && columnIndex == 0){
component.setBackground(Color.WHITE);
}
else if(columnIndex == 0){
component.setBackground(Color.ORANGE);
}
else if(columnIndex == 12) {
if (positions.get(getValueAt(rowIndex, 1)).toString().equals(getValueAt(rowIndex, 12)) && !getValueAt(rowIndex, 0).toString().equalsIgnoreCase("new")) {
component.setBackground(Color.LIGHT_GRAY);
}
else {
component.setBackground(Color.WHITE);
}
}
else {
component.setBackground(Color.WHITE);
}
return component;
}
};
我尝试过但没有工作
table.setRowSelectionAllowed(true);
答案 0 :(得分:0)
感谢@MadProgrammer的评论。我设法通过仅选中设置颜色来解决此问题,如果没有选择行。
if (!isRowSelected(rowIndex)) {
// set colors...
}