0

JTableAbstractTableModel. 我想在第三列中标记(更改单元格的颜色),它JTable与第二列具有相同的条目。例如:

在此处输入图像描述

因此,在这篇文章的帮助下,在继续之前检查 jtable 中的重复数据

我来到了这个:

      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那个总是变化的,这意味着有两个按钮,用于PREVIOUSNEXT这个表总是改变每个表单——列的数量也会改变。

如果有更多要求,我会编辑我的帖子。

谢谢你。

4

1 回答 1

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);
    }
}
于 2013-03-07T10:18:41.150 回答