2011-08-07 8 views
2

私は2つのJTableを持っています。 1つのレコードには一定の数のレコードがありますJTableJTableでJCheckBoxを動的に追加する必要があります

最初のJTableがロードされたら、同じ番号のJCheckboxをロードして2番目のテーブルに作成します。

私はこのシナリオを持っています... vlは両方のテーブルをメソッドaddCheckBoxに渡します。

private void addCheckBox(JTable procTableSrc, JTable procTableCk){ 

    CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer(); 
    EachRowRenderer rowRenderer = new EachRowRenderer(); 
    int rows = procTableSrc.getRowCount(); 

    DefaultTableModel dm = (DefaultTableModel)procTableCk.getModel(); 

    Object [] data = new Object[][]{{new Boolean(false)},{new Boolean(false)}}; 

    for(int i=1; i <=rows; i++){ 
     rowRenderer.add(i, checkBoxRenderer);   
     //model.addRow(new Object []{new Boolean(false)}); 
    } 
} 

これを達成するためのコードを教えてください。

+1

あなたはまだ具体的かつ回答可能な質問をしていません。 *あなたが必要とするものは何ですか?何を試しましたか?あなたはどこにいるのですか?コードを教えていただけますか?エラーについて教えてください。すぐにこれらの問題に対処してください。そうでなければ、あなたの質問が回答不能として閉鎖される恐れがあります。 –

+0

DefalutTableModelとEachRowRendererに問題があります.DefalutTableModelのCheckBoxRendererを定義する必要はありません – mKorbel

+0

下記の私の答えで** Edit 1 **を参照してください。 –

答えて

5

ありがとうございましたが、さらに私たちにもっと見せて、あなたの現在のコードが引き起こしているエラーを教えてください。

"CheckBoxRenderer"クラスに関しては、これは必要ありません。 hereというJTableのチュートリアルを読んでください。そこでは、テーブルモデルのgetColumnClassメソッドをオーバーライドするだけで、チェックボックスを表示するための興味のある列のBoolean.classを返すだけで済みます。

Luck。

編集1
また、どのような「行レンダラ」であり、そしてそれがどのような目的を果たすのでしょうか? JTableに情報を追加するには、モデルに行を追加する必要があります。コードを実行するコードは表示されません。 DefaultTableModel APIを見て、addRow(...)メソッドを見てください。このメソッドは多大なお手伝いをします。そのどちらか、またはデータ配列で新しいDefaultTableModelオブジェクトを作成します。実際、getColumnClass()メソッドをオーバーライドして、チェックボックスを表示する必要がある列に対してブール値を返すことができるため、これはおそらく良いでしょう。

編集2
また、これはあなたが1次元配列として宣言し、2次元配列としてそれを初期化しているので、コンパイルされません。:

Object [] data = new Object[][] 

は、次のことをやって考えてみましょう:

  • オブジェクトの2次元配列を作成し、モデルのデータを保持させます。配列の最初のインデックスはJTableに表示される行の数になり、2番目の列は列の数になります。
  • 各列の位置をブール値で入力します。
  • getColumnClass(...)をオーバーライドし、ブール値を保持し、チェックボックスを表示する必要がある列に対してBoolean.classを返す新しいDefaultTableModelオブジェクトを作成します。
  • 2-Dオブジェクト配列とおそらくは列ヘッダーのStringの配列を渡すことができるコンストラクタを与えます。コンストラクタの最初の行は、スーパーコンストラクタの呼び出しでなければならず、この呼び出しに配列パラメータを渡す必要があります。
  • 作成したばかりのモデルでprocTableCkオブジェクトのsetModelを呼び出します。
+0

"すぐに" +1 – mKorbel

+0

速記を削除し、彼の質問からできるだけ早く削除編集後にコメントを削除します。 –

関連する問題