2012-08-14 10 views
5

Tengo siete valores boolean en una columna de JTable que quiero vincular a mi bean.Cómo enlazar booleanos en JTable con JGoodies

¿Cómo puedo vincularlos?

Todos los JTable ejemplos vinculantes se centran en vincular la selección de la tabla, pero solo me preocupan cuáles son los valores de esos booleans.

+0

no entiendo del todo - esos booleanos están en diferentes beans (también conocido como: rows)? Si es así, conéctese a los bean/s directamente ... – kleopatra

+0

quiere decir siete valores booleanos diferentes en una fila o en una columna. Si está en una fila, puede definir un bean con siete atributos booleanos y vincular cada atributo a cada columna. Si es una columna, no estoy seguro de lo que significa. Lo básico es que cada fila representaría un bean. Entonces, siete valores booleanos diferentes en la columna significan siete beans diferentes. –

+0

Las tablas J almacenan los valores como Objeto de modo que, independientemente de que sean valores booleanos, puede vincularlos de la misma forma que enlaza cualquier otro tipo de valor. – Felype

Respuesta

1

Debe implementar su propio modelo de datos. Te doy un ejemplo simplificado que muestra la idea de uso. Eche un vistazo al método getColumnClass.

Uso: table.setModel (nuevo 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); 
    } 
} 

Espero que esto ayude.