2012-08-14 66 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); 
    } 
} 

希望这会有所帮助。