我有一个表格,每个单元格都有一个字符串。实际上,我将表格用作一页书,其中包含文本。我的问题是我想单击一个单元格,并且表格中所有相似单词的背景颜色都变为一种唯一颜色。例如,当我单击包含“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 大括号中也只有一次!我很困惑。你有什么想法?!