2012-08-14 20 views
5

Tôi có bảy giá trị boolean trong cột của một JTable mà tôi muốn liên kết với bean của mình.Cách liên kết booleans trong JTable với JGoodies

Làm cách nào để ràng buộc chúng?

Tất cả các ví dụ ràng buộc JTable ngoài đó tập trung vào việc ràng buộc lựa chọn bảng, nhưng tôi chỉ quan tâm đến giá trị của những giá trị booleans đó.

+0

không hoàn toàn hiểu - những booleans này có trên các bean khác nhau (aka: rows)? Nếu vậy, liên kết với bean/s trực tiếp ... – kleopatra

+0

bạn có nghĩa là bảy giá trị boolean khác nhau trong một hàng hoặc trong một cột. Nếu nó liên tiếp, bạn có thể định nghĩa một bean với bảy thuộc tính boolean và liên kết mỗi thuộc tính với mỗi cột. Nếu cột của nó, tôi không chắc nó có ý nghĩa gì. Điều cơ bản là mỗi hàng sẽ đại diện cho một bean. Vì vậy, bảy giá trị boolean khác nhau trên cột có nghĩa là bảy loại đậu khác nhau. –

+0

JTables lưu trữ các giá trị như là đối tượng như vậy, bất kể là giá trị boolean bạn có thể ràng buộc chúng giống như cách bạn ràng buộc bất kỳ loại giá trị nào khác – Felype

Trả lời

1

Bạn cần triển khai mô hình dữ liệu của riêng mình. Tôi cung cấp cho bạn ví dụ đơn giản cho thấy ý tưởng sử dụng. Hãy xem phương thức getColumnClass.

Cách sử dụng: 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); 
    } 
} 

Hy vọng điều này sẽ hữu ích.