# JTable Checkbox mehere Zeilen auswählen



## =fire= (3. Januar 2011)

Hallo,

ich habe in meiner JTable eine Checkbox in jede Zeile eingebaut. Nun möchte ich darüber mehrere zeilen selektieren können und anschließend über einen Button löschen.
Sobald man die Checkbox aktiviert wird ja die Methode setValueAt(row, col) meines Abstact Table Models aufgerufen, nur wie speichere ich dann die Zeile in einem Array oder in einer Liste? Oder sollte man das irgendwie anders lösen?

Danke, Gruß Simon


----------



## AttilaF (3. Januar 2011)

```
//...
JTable tab = new JTable(new TableValues());
tab.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));
JScrollPane scroll = new JScrollPane(tab);
//...

    class TableValues extends AbstractTableModel {

        protected Object[][] values = {
            {new Boolean(false),"Aaaaaaaaaaaaaa"},
            {new Boolean(false),"Bbbbbbbbbbbbbb"},
            {new Boolean(false),"Cccccccccccccc"}
        };

        public int getRowCount() {
            return values.length;
        }
        public int getColumnCount() {
            return values[0].length;
        }
        public Object getValueAt(int rowIndex, int columnIndex) {
            return values[rowIndex][columnIndex];
        }

        @Override
        public Class getColumnClass(int column) {
            Class dataType = super.getColumnClass(column);
            if (column == 0)
                dataType = Boolean.class;
            else if ((column == 1))
                dataType = String.class;
            return dataType;
        }
        
        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            if (columnIndex == 0)
                return true;
            else
                return false;
        }
        
        @Override
        public void setValueAt(Object value, int row, int col) {
            values[row][col] = value;
            //JCheckBox --> tabelle
            fireTableCellUpdated(row, col);
        }
     }
```


----------



## =fire= (3. Januar 2011)

Ich benutze anstatt dem Object eine ArrayList. Nur wie bekomme ich dann alle Elmente aus der ArrayList wo das Boolean auf true gesetzt ist um diese zu löschen?


----------



## AttilaF (3. Januar 2011)

Wie sieht die Struktur der Tabelle aus?
Wäre es nicht besser Object (für statische Datenstruktur) oder Vector (für dynamische Datenstruktur) zu benutzen?


----------



## AttilaF (3. Januar 2011)

Ja, das geht auch: Vector<Buch>

... aber für dieses Problem würde ich die folgende Lösung vorschlagen:

```
//...
Vector tabData = new Vector();
//...
while (rs.next()) {
     Object[] record = new Object[8];
     record[0] = rs.getInt("buecher_id");
     //...
     record[6] = rs.getString("inhaltsangabe")
     record[7] = new Boolean(false);  //für JCheckBox
     tabData.add(record);
}
//...
```


----------

