0

我有一个表格,每个单元格都有一个字符串。实际上,我将表格用作一页书,其中包含文本。我的问题是我想单击一个单元格,并且表格中所有相似单词的背景颜色都变为一种唯一颜色。例如,当我单击包含“and”的单元格时,表格中的所有“and”都会突出显示。我实现了 defaulttablecellrenderer,我知道当 java 想要绘制表格时,它会为每个单元格调用它。我尝试使用内在的重复能力并设置颜色,但它没有按我预期的方式工作。这些是我的代码:

JTable t=new Jtabale();
//Filling my table....here....
t.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e){
                    int column=((JTable)e.getSource()).getSelectedColumn();
                    int row=((JTable)e.getSource()).getSelectedRow();
                    JTable table=(JTable)e.getComponent();
                    Object myS=table.getValueAt(row, column);//value of that cell saved
                    CustomCellRenderer r=(CustomCellRenderer)table.getCellRenderer(row, column);
                    r.setCell(myS);

                    table.repaint();
                }
            });

这是我的 DefaultTableCellRenderer 实现:

public class CustomCellRenderer extends DefaultTableCellRenderer {

Object myStr;

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);


    if(myStr==value){
        c.setBackground(Color.YELLOW);
    }
    else
        c.setBackground(table.getBackground());
    return c;
}

public void setCell(Object val){
    myStr=val;
}

不知道这段代码有什么问题?这只是突出显示我单击的那个单元格。但我预计它会一起改变几个单元格的背景!即使我将 println 放在 if 中,但即使它在 if 大括号中也只有一次!我很困惑。你有什么想法?!

4

0 回答 0