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