JTable Checkbox mehere Zeilen auswählen

=fire=

Erfahrenes Mitglied
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
 
Java:
//...
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);
        }
     }
 
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?
 
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?
 
Ja, das geht auch: Vector<Buch>

... aber für dieses Problem würde ich die folgende Lösung vorschlagen:
Java:
//...
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);
}
//...
 
Zurück