我在JTable
的帮助下创建了AbstractTableModel
。我想在第JTable
这个与第二列具有相同条目的第三列中标记(更改单元格的颜色)。例如:
所以,在这篇文章Check duplicate data in jtable before proceeding
的帮助下我来到这里:
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
{
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
TreeSet<Object> set = new TreeSet<Object>();
for (int i=0; i<model.getRowCount();i++){
Object obj = model.getValueAt(i,1); //(row, column)
if(!set.add(obj))
{
c.setBackground(new java.awt.Color(255, 72, 72));
}
else{
c.setBackground(null);
}
}
return c;
}
});
但是,虽然它似乎正确地检查了每一行(由于我已经完成了一些打印),但没有任何颜色。我想补充一点,我创建的JTable
是一个JTable
,它始终会发生变化,这意味着PREVIOUS
和NEXT
有两个按钮,此表总是如此更改每个表单 - 也更改列数。
如果还有其他要求,我会编辑我的帖子。
谢谢。
答案 0 :(得分:2)
我会用
替换渲染器中的for
if (column==2) {
Object obj = model.getValueAt(row,column-1); //(row, column)
if(value.equals(obj)) {
c.setBackground(new java.awt.Color(255, 72, 72)); //red
}
else{
c.setBackground(null);
}
}