2012-08-14 72 views
5

我在JTable的列中有7個boolean值,我想綁定到我的bean。如何綁定JTable中的布爾值和JGoodies

我該如何綁定它們?

所有JTable綁定示例在那裏重點綁定表選擇,但我只關心那些booleans的值是什麼。

+0

不太明白 - 那些布爾值在不同的bean(aka:rows)上?如果是這樣,直接綁定到bean/s ... – kleopatra 2012-08-15 08:40:16

+0

您是指在一行或一列中七個不同的布爾值。如果它在一行中,你可以定義一個具有七個布爾屬性的bean,並將每個屬性綁定到每一列。如果它的列,我不確定它是什麼意思。基本的東西是每一行代表一個bean。所以列上的七個不同的布爾值意味着七個不同的bean。 – 2012-11-27 21:39:32

+0

JTables將值存儲爲Object,因此無論是否爲布爾值,都可以使用與綁定任何其他值類型相同的方式綁定它們 – Felype 2013-06-03 15:33:38

回答

1

您需要實現自己的數據模型。我給你簡單的例子,顯示使用的想法。看看getColumnClass方法。

用法:table.setModel(new DataModel(myData));

class DataModel extends AbstractTableModel 
{ 


    public DataModel(Object yourData){ 
     //some code here 
    } 

    @Override 
    public int getRowCount() { 
     return yourData.rows; 
    } 

    @Override 
    public int getColumnCount() { 
     return yourData.colums; 
    } 

    @Override 
    public Class<?> getColumnClass(int col) { 
     if (col == myBooleanColumn) { 
      return Boolean.class; 
     } else { 
      return null; 
     } 
    } 

    @Override 
    public boolean isCellEditable(int row, int col) 
    { 
     return col >= 0; 
    } 

    @Override 
    public Object getValueAt(int rowIndex, int columnIndex) { 

     return yourData.get(rowIndex,columnIndex); 
    } 

    @Override 
    public void setValueAt(Object aValue, int row, int col) {   

    yourData.set(aValue,row,col)  

     this.fireTableCellUpdated(row, col); 
    } 
} 

希望這會有所幫助。