java - 标记 JTable 中的重复项

标签 java swing jtable tablecellrenderer

我在 AbstractTableModel 的帮助下创建了一个 JTable。我想在此 JTable 中标记(更改单元格的颜色)第三列,该列与第二列具有相同的条目。例如:

enter image description here

所以,在这篇文章的帮助下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,这意味着有两个按钮,分别用于 PREVIOUSNEXT并且此表总是会更改每种表单 - 列数也会更改。

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

谢谢。

最佳答案

我将渲染器中的 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);
    }
}

关于java - 标记 JTable 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15267937/

相关文章:

java - JMenuBar 未显示

java - 图标图像加载速度不够快

java - 使用 beans 绑定(bind)搜索 jTable

java - 如何打开JTable?

java - Sonarlint 和其他 Eclipse 模仿 sonarqube 的工具

java - 如何使 BufferedImage 与该图像一起使用? (java)

java - 用于从 Matlab 写入 XLSX 的未定义函数 'create'

java - JTable 从末尾选择行

java - 清除所有已安装应用程序的缓存

java - 无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的