2012-08-14 7 views
5

Ho sette valori boolean in una colonna di un JTable che voglio associare al mio bean.Come associare i booleani a JTable con JGoodies

Come si collegano?

Tutti gli esempi di binding JTable sono incentrati sull'associazione della selezione della tabella, ma mi interessa solo quali sono i valori di tali booleans.

+0

non capisco bene: quei booleani sono su fagioli diversi (ovvero: righe)? In tal caso, esegui il bind direttamente nel bean/s ... – kleopatra

+0

intendi sette diversi valori booleani in una riga o in una colonna. Se è in una riga, puoi definire un bean con sette attributi booleani e associare ciascun attributo a ciascuna colonna. Se la sua colonna non è sicura, significa che cosa significa. La cosa fondamentale è che ogni riga rappresenterebbe un bean. Quindi sette diversi valori booleani sulla colonna indicano sette diversi bean. –

+0

JTables memorizza i valori come Object in modo che, indipendentemente dai valori booleani, è possibile associarli allo stesso modo in cui si associa qualsiasi altro tipo di valore – Felype

risposta

1

È necessario implementare il proprio modello di dati. Ti do un esempio semplificato che mostra l'idea di utilizzo. Dai un'occhiata al metodo getColumnClass.

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

Spero che questo aiuti.