JavaでJTableから行を削除する方法

JavaでのJTableの行の削除は、JTableのテンプレートによって異なります。JTableはデフォルトで DefaultTableModel です。ただし、独自の Table Model.

delete in 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}};
文字列[] 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 モデル を使用すると、次のようになります:

class Model extends AbstractTableModel{

List<オブジェクトです>data = new ArrayListです<オブジェクトです>();
public void removeRow(int line){
this.data.remove(line);
}
}
JTable HashMap Model:

class Model extends AbstractTableModel{

HashMap<整数型、オブジェクト[]>data = new HashMapです<整数型、オブジェクト[]>();
public void removeRow(int line){
this.data.remove(line);
}
}
また、要素が動的に格納されていない 2 次元配列を使用している場合は、配列から行を削除する関数がないため、問題が発生します。したがって、(n-k)*m(k;

References:
Oracleドキュメント: DefaultableModel
Developpez.com: AbstractTableModel
okipa.be: JTable