すべてのセルが文字列を保持するテーブルがあります。実際、私は表を本のページとして使用し、テキストが含まれています。私の問題は、セルをクリックすると、テーブル内のすべての類似した単語の背景色が 1 つの一意の色に変わることです。たとえば、「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;
}
このコードの何が問題なのかわかりませんか? これは、クリックしたセルのみを強調表示します。しかし、私はそれがいくつかのセルの背景を一緒に変えることを期待していました! 私は if の中に println を入れましたが、 if ブレースに一度入れました! 混乱しました。あなたの考えは?!