Juraj Lúdik
Juraj Lúdik

Reputation: 83

Java - delete selected row from tablemodel

I need delete deleted row from my arraylist...

private GuiIO guiIO;
private DefaultTableModel tableModel;
private List<Book> zoz;


public MyGui() {
    initComponents();
    this.setLocationRelativeTo(this.getRootPane());
    this.guiIO = new GuiIO();

    tableModel = new DefaultTableModel(new String[]{"Znacka", "Model", "Najazdene", "Rok vyroby", "Vykon", "Cena"}, 0);
    this.tblTabulka.setModel(tableModel);
    this.tblTabulka.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    tblTabulka.setAutoCreateRowSorter(true);
    TableRowSorter rowSorter = new TableRowSorter(tableModel);
    zoz = guiIO.getAllBook();
}

my function for delete row from model:

   private void btnClearActionPerformed(java.awt.event.ActionEvent evt) {
    final int sectedRowIndex = this.tblTabulka.getSelectedRow();
    this.tableModel.removeRow(sectedRowIndex);
    zoz = guiIO.getAllBook();
}

 public List getAllBook() {
    List all_book = new ArrayList<Book>();

    for (Containerable item = this.book.getFirst();
            item!=null;
            item = this.book.getNext())
        all_book.add(item);
    return all_book;
}    

but i need delete it from my private List zoz;

how can i do it?

Upvotes: 0

Views: 995

Answers (1)

Braj
Braj

Reputation: 46891

I need delete it from my private List zoz?

 zoz.remove(sectedRowIndex); // if table is not sortable

Note:

  • Do not initialize the list again after deleting the selected row.
  • DefaultTableModel is not populating from the list
  • put a check tblTabulka.getSelectedRow() != -1 before deleting the row whether row is selected or not?

Use Map instead of List something like

Map<String,Book> books = new HashMap<String,Book>();

where you can make isbn or id as key.


Sample code:

button.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // check for selected row first
        if (tblTabulka.getSelectedRow() != -1) {

            // get value of first cell of selected row
            String isbn= (String)tableModel.getValueAt(tblTabulka.getSelectedRow(), 0);
            books.remove(isbn);

            // remove from the model also
            model.removeRow(tblTabulka.getSelectedRow());
        }
    }
});

Upvotes: 3

Related Questions