0

プログラムに scrTbl という名前の JTable を実装しました。「up」と呼ばれる外部ブール変数に基づいて、このテーブルの 1 つの列のテキストの色を変更できるようにしたいと考えています。この取り組みに関連する私のコードは次のとおりです。

TableColumn tcol = scrTbl.getColumnModel().getColumn(9);
tcol.setCellRenderer(new CustomTableCellRenderer());

public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
    @Override
    public Component getTableCellRendererComponent (JTable table,    
    Object obj, boolean isSelected, boolean hasFocus, int row, int 
    column)
    {
        Component cell = super.getTableCellRendererComponent(table, 
          obj, isSelected, hasFocus, row, column);

        if (up && (row == nmbrStocks))
        {
            cell.setForeground(Color.green);
        }
        if ((!up) && (row == nmbrStocks))
        {
            cell.setForeground(Color.red);
        }
        return cell;
    }//Component
} //class getTableCell...

ポイントは、up の値に基づいて、列 9 と特定の行 (インデックス付き nmbrStocks) のテキストの色を緑または赤に設定することです。

しかし、実行すると、すべてのテキストが緑色に設定されます。列 9 のセルが書き込まれるたびにレンダラーが呼び出されますか、それともプロトコルは何ですか?

助けてくれてありがとう。

4

1 に答える 1

0

1つの列のみを変更する必要があるため、コードを調整して、行だけでなく列も指定します

    if (row == nmbrStocks && column == the_desired_column_you_wish_to_change)
    {
      if (up){
        cell.setForeground(Color.green);
      }else{
        cell.setForeground(Color.red);
      }
    }
于 2010-07-09T20:30:37.420 に答える