0

これは私の最初の StackOverflow の質問なので、信じられないほどばかげたことをしたり質問したりした場合は、寛大にしてください。

私はJava、特にswingに関して初心者であり、TableCellRendererインターフェースのgetTableCellRendererComponent関数を理解するのに苦労しています(TableCellEditorインターフェースのgetTableCellEditorComponent関数と同様です)。具体的には第2引数(オブジェクト型)のポイントがわかりません。これの値は、指定された行と列の指定された JTable から取得されたものではありませんか? もしそうなら、なぜ2番目の引数を気にするのですか? 私はかなり多くのグーグル検索を行ってきましたが、誰もこれに答えているようには見えません (または、おそらく私の脳にはいくつかの機能不全のニューロンがあり、過去の歴史を考えると、それはありそうもない説明ではありません...)

助けていただければ幸いです!

ありがとう

4

1 に答える 1

2

JTableレンダリングは、1 つのコンポーネントを繰り返し移動してテーブル セルの値をレンダリングする flyweightパターンの例です。getTableCellRendererComponent()、セルをレンダリングする必要があるとテーブルが判断するたびに、テーブルによって呼び出されます。頻繁に呼び出される可能性があるため、効率には注意が必要です。利点は、非表示セルのレンダリング プロセスを省略できることです。この関連するも参照してください。

補遺:を使用する代わりに単に呼び出すだけ ではどうですか?table.getValueAt(row, column) value

セルを描画するとき、テーブルの UI デリゲート (通常は のサブクラス) は、を知らなくてもBasicTableUI呼び出す必要があります。の知識を持つテーブルのメソッドのコントラクト、 「データ モデルに値を照会することによってレンダラーを準備する」ことを指定します。詳細については、Swing アーキテクチャの概要を参照してください。prepareRenderer()TableModelprepareRenderer()TableModel

于 2013-08-27T17:14:24.283 に答える