[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] JTableで右づめ




>こんばんわ。布留川です。
こんにちは、岡崎と申します。

>JTableのセル内で文字列を右づめで表示したいのですがうまくいきません。
>DefaultCellRenderなどJLabelを使って右づめにしてみたのですが
>選択の色がつきません。(ロー単位で選択したい。)

>なにかいい方法ないでしょうか?

デフォルトぢゃないCellRendererをつくりませう(爆)。
レシピは、下記の通り。

(1)JLabelを継承して、新しいクラスを作ります。
   このとき、TableCellRendererをインプリメントします。
(2)そのクラスの生成時に、右詰表示にしちゃいます。
(3)そのクラスに対して、関数getTableCellRendererComponentを実装します。
   引数1のtableは、表示するテーブル。nullのときもあるので、
   その時は処理せずに終わるようにします。
   引数2のvalueは、TableModelから来るデータ。
   文字列のときは、そのクラスへsetTextしましょう。
   引数3のisSelectは、選択中かどうかを示します。
   引数4のhasFocusは、フォーカスが有るかどうかをしめします。
   いずれも、TrueのときにBackgroundの色を変えると、選択中/フォーカス有りに見えます。
   引数5,6は、テーブルのセルの座標です。偶数行に色を変えたいときに効果的。
   最後に、thisを返すようにします。
(4)画面プログラムで、右詰にしたいTableColumn毎にそのクラスをnewして、
   TableColumnのCellRendererに登録します。

このやり方は、JList,JTreeでも応用できます。ぜひ、おためしあれ。