• ベストアンサー

JTableの特定セルの背景色を変更

現在swingを勉強中です。 よろしくお願いします。 JTableで例えば、ある列の値が 1行目:10~100 2行目:20~40 3行目:80~120 4行目:150~200 のような範囲を持った値のとき、 範囲が重なっている1行目から3行目のセルの背景色を変更したいのですが、可能でしょうか。 おそらくTableCellRender等を使用するのかとは思うのですが…

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 こんにちは。 >範囲が重なっている1行目から3行目のセルの背景色を >変更したいのですが、可能でしょうか。  可能です。  ただし、JTableの内部構造をある程度知っておく必要があります。  JTableやJListは、描画方法がやや変わっています。  たとえば、JTabelのディフォルトのTableCellRendererは、DefaultTableCellRendererですが、これは、JLabelを継承して作られているので、実質はJLabelです。  しかし、10×10の表があった場合、100個のJLabelのインスタンスがあるわけではありません。  DefaultTableCellRendererのインスタンスは一つで、それを描画時にポンポンとハンコのように押していくことで、描画していきます。  それを実現しているのが、getTableCellRendererComponentメソッドです。  ぜひ、DefaultTableCellRendererのソースコードを読んでみてください。  ここを理解できれば、あとは、DefaultTableCellRendererを継承し、getTableCellRendererComponentメソッドをオーバーライドして、自分の意に沿うRendererを実装することはたやすいと思います。

-well-
質問者

お礼

お早い回答ありがとうございます。 >ぜひ、DefaultTableCellRendererのソースコードを読んでみてください。 そうですね。 まずは、ソースを読んで理解してみようと思います。 とりあえずは、目的のことができそうなので安心しました。 また、何かありましたらよろしくお願いいたします。

関連するQ&A