2011-06-21 14 views
2

特定の表のセルの色を設定するには、次のメソッドを持つカスタムTableCellRendererを作成する必要があります。getTableCellRendererComponentjava:このメソッドが呼び出されるのはいつですか:getTableCellRendererComponent?

このメソッドが呼び出されるのはいつですか:getTableCellRendererComponent

初めてJTableを描画したときは?

jframe上にボタンとjtableのセットがあり、各ボタンを押すとテーブルの特定の数のセルが色付きになる場合はどうすればこのメソッドを呼び出すことができますか"getTableCellRendererComponent"ボタンを押しますか?

答えて

2

これは、テーブルが最初にレンダリングされたときに発生しますが、fireTableCellUpdatedまたはその他の「fire *」メソッドのいずれかが呼び出されると、すべてのセルで呼び出される必要があります。私は、AbstractTableModel(DefaultTableModel?)を拡張するクラスを使用しているという印象を受けています。その時点で、テーブルモデルの特定の値を更新するときにこれらのメソッドを起動する必要があります。

カスタムセルレンダラの使用例は、Example Depotにあります。 getTableCellRendererComponentは、セルが表示されるとき、およびモデル更新が発生したときに呼び出されます。

補足:私はちょうどあなたの質問に他の部分を気付いた、getTableCellRendererComponentはいつ呼び出されましたか?これは、レンダリングが必要なテーブル内のすべての可視セルに対して呼び出されます。このように考えると、JLabelをレンダラーとして内部的に使用している場合、そのセルのみを表示するように設定されたJLabelを返します。それはそれをレンダリングするために次のセルで再利用されます。それを考える最も簡単な方法は、あなたのセルを見た目にして、それをgetTableCellRendererComponent呼び出しで設定し、それを返すようにする視覚的なテンプレートです。呼び出し元のフレームワークは、「イメージ」(より良い用語がないため)としてスクリーンバッファにレンダリングし、次のセルのために再構成され、再びレンダリングされます。

0

getTableCellRendererComponent?

このメソッドは、初めてUIコンポーネントが表示/表示されるときに呼び出されます。 JTableの

  1. のセルに色を設定する

    は、カスタムDefaultTableCellRendererを使用している願っています。その場合は、カスタムCellRendererのJLabelをグローバル化し、行、列のインデックスに基づいてボタンのクリック時に背景色を設定することができます。

  2. これ以外の場合は、セルごとにレンダリングされるdefaultrenderer/set customrendererを持つDefaultTableColumnModelを使用できます。使用すると、セルの背景色を設定できます。

TableColumn col = table.getColumnModel().getColumn(vColIndex); 
col.setCellRenderer(new MyTableCellRenderer()); 

参照してください:Simple example to demonstrate usage of TableCellRenderer

+4

DefaultTableModelは、適切なレンダラーをテーブルで使用できるようにデータのクラスを指定する以外のレンダリングには関係ありません。各セルにデフォルトのレンダラーはありません。 TableModelでセルの色を指定することはできません。 – camickr

+1

-1完全に間違った最初のセンテンス(「いつ」に応答する)、もう1つはモデルを誤って再生する(Robは既に述べた通り)。レンダラの特定の実装に設定を繋ぐ-1/2 (いずれのコンポーネントも行います)。 – kleopatra

+0

@Camickr - 私は間違ってDefaultTableColumnModelの代わりにDefaultTableModelについて言及してくれたことを申し訳なく思っています。私はそれらを修正するために自分の投稿を編集しました。 @kleopatra - – raksja

2

をあなたは時に/どのように/どこ/テーブルセル(s)は、私としてprepareRenderer最良の例を探して更新またはされていないされてのために忘れてしたい場合camickr blog

EDIT:より良い/貴重な鍬のために投稿を編集してコードを追加してください

関連する問題