如何通过点击更改几个单元格的背景?

时间:2013-03-13 10:42:39

标签: java swing background jtable

我有一张表,每个单元格都有一个字符串。实际上,我使用该表作为书页,它包含文本。我的问题是我想点击一个单元格,表格中所有类似单词的背景颜色都变为一种独特的颜色。例如,当我点击包含'和'的单元格时,表格中的所有'和'都会突出显示。我实现了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大括号中也只有一次!我很困惑。你有什么想法?!

0 个答案:

没有答案