如何在 Java 中从 JTable 中删除一行
在 Java 中删除 JTable 中的行取决于 JTable 的模板。JTable 默认使用 DefaultTableModel。但是,您也可以在 DefaultTableModelDefaultTableModel 中指定自己的 Table Model.
Delete,将数据存储在 Vector 数组中,这样可以更轻松地删除,方法是使用 romoveRow(int line).
Delete,将数据存储在 Vector 数组中,这样可以更轻松地删除,方法是使用 romoveRow(int line).
import javax.swing.JFrame;
导入 javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
导入 javax.swing.table.DefaultTableModel;
public class JTableExample extends JFrame{
Object[][] data = {{9,8,7,6},{7,6,5},{6,5,4}};
String[] 标题 = {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();
}
}
导入 javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
导入 javax.swing.table.DefaultTableModel;
public class JTableExample extends JFrame{
Object[][] data = {{9,8,7,6},{7,6,5},{6,5,4}};
String[] 标题 = {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();
}
}
如果您创建了自己的模型,该模型继承自 AbstractTableModel,那么你还必须实现 removeRow。此实现取决于您为存储数据而实现的结构的性质。
例如,如果您使用 ArrayList JTable model,则它将如下所示:
References:
Oracle 文档:DefaultableModel
Developpez.com:使用 AbstractTableModel
okipa.be 显示数组:在 JTable
例如,如果您使用 ArrayList JTable model,则它将如下所示:
class Model extends AbstractTableModel{JTable HashMap Model:
List<对象>数据 = new ArrayList<对象>();
public void removeRow(int line){
this.data.remove(line);
}
}
class Model 扩展 AbstractTableModel{如果你使用的是元素不是动态存储的二维数组,那么你就会遇到问题,因为没有函数可以从数组中删除一行。因此,您将创建一个偏移量,该偏移量将具有不必要的复杂度 (n-k)*m(k;行索引)引起的偏移所有元素所需的时间和操作次数。
HashMap<整数,对象[]>data = 新的 HashMap<整数,对象[]>();
public void removeRow(int line){
this.data.remove(line);
}
}
References:
Oracle 文档:DefaultableModel
Developpez.com:使用 AbstractTableModel
okipa.be 显示数组:在 JTable