- 締切済み
JTableでのCellRendererについて
お世話になります。 CellRendererの実装についてどうしてもうまくいかず、 一人で考えていても時間を使ってしまうだけと思い、 質問させていただきました。 現在ある2つの値を比較して、その値が違う場合に テーブルの特定のセルの背景色を変更したいと考えていて CellRendererを使用しているのですが、DefaultTableCellRendererを 継承した自作RendererクラスのgetTableCellRendererComponent メソッドでは特定のカラムしか選択、背景色の変更が 行われません。 (getTableCellRendererComponentのcolumnパラメータに 特定の値しかわたってこない) こういったご経験がある方がおりましたら打開策をご教授いただければと 思います。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ngsvx
- ベストアンサー率49% (157/315)
レンダラーの設定はカラムに対して行っていませんか? 設定されたカラムからしかレンダラーが呼ばれないでいるのだと推測できます。 全部のカラムの表示を自作のレンダラーで行うのであれば、全部のカラムに対してレンダラーを設定する必要があります。 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が呼び出されます。