Java 在JTable中标记重复项
在Java 在JTable中标记重复项,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,在AbstractTableModel的帮助下,我创建了一个JTable。我想在thisJTable中标记(更改单元格颜色)第三列,该列的条目与第二列相同。例如: table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable ta
AbstractTableModel
的帮助下,我创建了一个JTable
。我想在thisJTable
中标记(更改单元格颜色)第三列,该列的条目与第二列相同。例如:
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;
}
});
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;
}
});
因此,在这篇文章的帮助下
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;
}
});
我已经谈到这一点:
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;
}
});
table.setDefaultRenderer(Object.class,新的DefaultTableCellRenderer())
{
@凌驾
公共组件GetTableCellRenderComponent(JTable表,
对象值,布尔isSelected,布尔hasFocus,int行,
int列){
组件c=super.getTableCellRenderComponent(表、值、isSelected、hasFocus、,
行、列);
树集=新树集();
对于(int i=0;i我将用
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;
}
});
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);
}
}
,可能是可能的,但为了更好地帮助您,请尽快将AbstractTableModel的SSCCE、简短、可运行、可编译、硬代码数组作为本地变量发布。图像与您的问题有何关系?重复的列与行、前景与背景?如果不满意,请删除。最好显示一个演示问题的SSCCE。请注意:set颜色(高亮显示或空)在调用super@kleopatra之前,该图像不是用来演示我标记重复项的方式,而是用来演示我当前的JTable是如何的以及我要检查的内容。从该图像中,我猜当所有值都与前一列中的对应单元格相同时,您想要标记列中的所有单元格。这不是您的逻辑所做的:-)我想做的是检查b列,看看c列和d列是否有相同的值。如果JTable只有两列,我想这是正确的,对吗?即使它只有两列,它也会标记3个单元格继续到下一行。