誕生日にもらった意外なもの

お世話になります。
CellRendererの実装についてどうしてもうまくいかず、
一人で考えていても時間を使ってしまうだけと思い、
質問させていただきました。

現在ある2つの値を比較して、その値が違う場合に
テーブルの特定のセルの背景色を変更したいと考えていて
CellRendererを使用しているのですが、DefaultTableCellRendererを
継承した自作RendererクラスのgetTableCellRendererComponent
メソッドでは特定のカラムしか選択、背景色の変更が
行われません。
(getTableCellRendererComponentのcolumnパラメータに
特定の値しかわたってこない)

こういったご経験がある方がおりましたら打開策をご教授いただければと
思います。
よろしくお願いします。

A 回答 (1件)

レンダラーの設定はカラムに対して行っていませんか?


設定されたカラムからしかレンダラーが呼ばれないでいるのだと推測できます。

全部のカラムの表示を自作のレンダラーで行うのであれば、全部のカラムに対してレンダラーを設定する必要があります。

TablecellRenderer ren0 = new MyRenderer0();
TablecellRenderer ren1 = new MyRenderer1();

jtable.getColumnModel().getColumn(0).setCellRenderer(ren0);
jtable.getColumnModel().getColumn(1).setCellRenderer(ren1);

とした場合、ren0はカラム0の表示の時だけ呼び出され、
ren1はカラム1の表示の時だけ呼び出されます。

全て同じレンダラーを使うのであれば、
jtable.getColumnModel().getColumn(0).setCellRenderer(ren0);
jtable.getColumnModel().getColumn(1).setCellRenderer(ren0);
としなければなりません。

これですと、カラム0、カラム1の表示にren0が呼び出されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!