2012-08-14 15 views
5

Ich habe sieben boolean Werte in einer Spalte von JTable, die ich an meine Bean binden möchte.Wie booleans in JTable mit JGoodies zu binden

Wie binde ich sie?

Alle JTable Binding-Beispiele draußen konzentrieren sich auf das Binden der Tabelle Auswahl, aber ich interessiere mich nur für, was die Werte dieser booleans sind.

+0

nicht ganz verstehen - diese Booleans sind auf verschiedenen Bohnen (aka: Zeilen)? Wenn ja, binde direkt an die Bean/s ... – kleopatra

+0

meinst du sieben verschiedene boolesche Werte in einer Zeile oder in einer Spalte. Wenn es in einer Zeile ist, können Sie eine Bean mit sieben booleschen Attributen definieren und jedes Attribut an jede Spalte binden. In der Spalte bin ich nicht sicher, was es bedeutet. Grundlegend ist, dass jede Zeile eine Bean darstellen würde. Also sieben verschiedene boolesche Werte in der Spalte bedeutet sieben verschiedene Bohnen. –

+0

JTables speichern Werte als Object, so dass Sie unabhängig davon, ob es sich um boolesche Werte handelt, diese auf die gleiche Weise binden können, wie Sie einen anderen Wertetyp binden – Felype

Antwort

1

Sie müssen ein eigenes Datenmodell implementieren. Ich gebe Ihnen ein vereinfachtes Beispiel, das eine Nutzungsidee zeigt. Sehen Sie sich die getColumnClass-Methode an.

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

Hoffe, das hilft.