2010-11-30 14 views
3

私は、DefaultTableModelにObject [] []配列が設定されています。DefaultTableModelにCheckBoxを追加する

ここで、checkBoxesで列を追加し、それに応じて操作を実行します。

私は、オブジェクト[] []配列にチェックボックスを追加し、それを表示すると、私はテキストは 'javax.swing.JCheckBox [、0,0,0x0 ....'

を表示します、どのように行います私はチェックボックスを表示し、それにアクションを追加することができますか?

答えて

4

JTableはブール値のデフォルトのチェックボックスレンダラ/エディタを持ってこちらを参照してください。指定された列に対してTableModel#getColumnClass返信Boolean.classを作成してください。

0

いいえいいえスイングコンポーネントをモデルオブジェクト[]配列として指定することはできません。それは列のセルエディタとして登録する必要があります。

とにかくデフォルトでは、DefaultTableModelはBooleanクラスの型の値が格納されている列のエディタとしてチェックボックスをサポートしています。

したがって、配列では、Boolean.TRUE/Boolean.FALSEオブジェクトを渡し、テーブルを編集可能に設定します。次に、テーブルが自動的にチェックボックスをレンダリングします。

あなたは、各クラス型のためのエディタを登録する必要がある

+0

私はこれを試してみましたしかし、単に文字列 "false"を出力します。( – Vivek

+0

TableModel#getColumnClassを実装していない可能性が高いので、私の答えを見てください:) – Uhlen

2

どのように私はそれは、チェックボックス

参照Uhlenの答え

を示し、それにアクションを追加するのですか?

TableModelListenerを使用します。次のようなものがあります。

public void tableChanged(TableModelEvent e) 
{ 
    if (e.getType() == TableModelEvent.UPDATE) 
    { 
     int row = e.getFirstRow(); 
     int column = e.getColumn(); 

     if (column == ?) 
     { 
      TableModel model = (TableModel)e.getSource(); 
      Boolean value = (Boolean)model.getValueAt(row, column)); 

      if (value.booleanValue()) 
       // add your code here 
     } 
    } 
} 
+0

TableModelにTableModelEventをどのように追加しますか? – Teysz

+1

@Teysz、 'table.getModel.addTableModelListener(...);' – camickr

2

各戻り値のタイプをハードコードする代わりに、クラスを取得することもできます。ここでは、オーバーライドメソッドの例です。

//create the table 
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) 
//override the method 


       { 
     public Class<?> getColumnClass(int colIndex) { 

       return getValueAt(0, colIndex).getClass(); 

      } 

その後、あなたはそれをこのように初期化するテーブル作成するとき:ボックスはチェックを外す見せる

data[i][12] = new Boolean(false); 

を:)

関連する問題