Как удалить строку из JTable в Java

Удаление строки в JTable в Java зависит от шаблона JTable. JTable используется по умолчанию  DefaultTableModel. Тем не менее, вы также можете указать свой собственный Table Model.

Delete в DefaultTableModel

DefaultTableModel хранит данные в массиве Vector, что упрощает удаление, удаляя только плоские элементы в этой строке с помощью метода romoveRow(int line).

import javax.swing.JFrame; 
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

public class JTableExample extends JFrame{

Object[][] data = {{9,8,7,6},{7,6,5},{6,5,4}};
String[] title = {"c1", "c2", "c3"};

public JTableExample(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

DefaultTableModel dtm = new DefaultTableModel(data, title);
table.setModel(dtm);
this.getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
//удаляем строку 2
((DefaultTableModel)table.getModel()).removeRow(1);
pack();
}

public static void main(String[] args) {
new JTableExample();
}
}
Output
jtable defaulttablemodel
Front
удалить строку в jtable defaulttablemodel
После

Удалить в  AbstractTableModel

Если вы создали собственную модель, которая наследуется от  AbstractTableModel, то необходимо также реализовать removeRow. Эта реализация зависит от характера структуры, которую вы реализовали для хранения данных.

Например, если вы используете ArrayList JTable model, то она будет выглядеть следующим образом:

class Model extends AbstractTableModel{

List< объект> data = новый ArrayList< объект> ();
public void removeRow(int line){
this.data.remove(line);
}
}
JTable HashMap Model:

class Model extends AbstractTableModel{

HashMap< Целое число, объект[]> data = новый HashMap< Целое число, объект[]> ();
public void removeRow(int line){
this.data.remove(line);
}
}
А если вы используете двумерный массив, элементы которого не хранятся динамически, то у вас возникнут проблемы, потому что нет функции, которая удаляет строку из массива. Итак, вы создадите смещение, которое будет иметь ненужную сложность (n-k)*m(k; line index), вызванные временем и количеством операций, необходимых для смещения всех элементов.

References:
Oracle documentation: Метод removeRow класса DefaultableModel
Developpez.com: Отображение массива с помощью AbstractTableModel
okipa.be: Отображение данных в JTable