プロが教えるわが家の防犯対策術!

現在swingを勉強中です。
よろしくお願いします。

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

A 回答 (1件)

 こんにちは。



>範囲が重なっている1行目から3行目のセルの背景色を
>変更したいのですが、可能でしょうか。

 可能です。

 ただし、JTableの内部構造をある程度知っておく必要があります。

 JTableやJListは、描画方法がやや変わっています。
 たとえば、JTabelのディフォルトのTableCellRendererは、DefaultTableCellRendererですが、これは、JLabelを継承して作られているので、実質はJLabelです。
 しかし、10×10の表があった場合、100個のJLabelのインスタンスがあるわけではありません。
 DefaultTableCellRendererのインスタンスは一つで、それを描画時にポンポンとハンコのように押していくことで、描画していきます。

 それを実現しているのが、getTableCellRendererComponentメソッドです。

 ぜひ、DefaultTableCellRendererのソースコードを読んでみてください。

 ここを理解できれば、あとは、DefaultTableCellRendererを継承し、getTableCellRendererComponentメソッドをオーバーライドして、自分の意に沿うRendererを実装することはたやすいと思います。
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます。

>ぜひ、DefaultTableCellRendererのソースコードを読んでみてください。

そうですね。
まずは、ソースを読んで理解してみようと思います。
とりあえずは、目的のことができそうなので安心しました。

また、何かありましたらよろしくお願いいたします。

お礼日時:2006/11/23 18:15

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