当我选择表格上的行时,我希望方法仅在特定列设置颜色
尝试覆盖prepareRenderer()
@mKorbel 建议的方法。
示例代码:
Object[] columnNames = { "A", "B", "C", "D" };
Object[][] data = {
{ "abc", new Double(850.503), 53, true },
{ "lmn", new Double(36.23254), 6, false },
{ "pqr", new Double(8.3), 7, false },
{ "xyz", new Double(246.0943), 23, true } };
JTable table = new JTable(data, columnNames) {
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
Component comp = super.prepareRenderer(renderer, row, col);
Object value = getModel().getValueAt(row, col);
if (getSelectedRow() == row) {
if (value.equals(false)) {
comp.setBackground(Color.red);
} else if (value.equals(true)) {
comp.setBackground(Color.green);
} else {
comp.setBackground(Color.white);
}
} else {
comp.setBackground(Color.white);
}
return comp;
}
};
当选择第一行时:
当选择第二行时。
阅读更多...
EDIT
根据你最后的评论
是否可以在不单击(选择)表格上的行的情况下更改颜色?
是的,只需删除所选行的选中即可。
Object value = getModel().getValueAt(row, col);
if (value.equals(false)) {
comp.setBackground(Color.red);
} else if (value.equals(true)) {
comp.setBackground(Color.green);
} else {
comp.setBackground(Color.white);
}