我有一个JTable,它是一个DefaultTableModel。表格中的数据可从ArrayList CarList访问。我遇到的问题是,删除行后,它只是暂时删除。要删除项目中的行,用户必须选择一行,然后按“删除”按钮。当我使用我正在使用的编码时,该行将从jTable中删除,但数据不会从我的Arraylist中删除,所以当我再次打开JTable时,我删除的行仍然存在。谁能帮帮我吗?我在这里有一些编码:
ArrayList CarList = CarRentalSystem.CarList;
UsingFiles CarFile = CarRentalSystem.CarFile; //ArrayLists accessed from the whole project
/**
* Creates new form ViewCars
*/
public ViewCars() { //creating the table and accessing the data from the arraylists
initComponents();
this.CarList=CarList;
DefaultTableModel model = (DefaultTableModel) carTable.getModel();
for (int i=0; i<CarList.size(); i++){
Car car = (Car) CarList.get(i);
model.addRow(new Object[]{car.getCarNum(), car.getManufacturer(), car.getModel(), car.getBooked(), car.getAircondition()});
btnEdit.setVisible(true);
btnDelete.setVisible(false);
btnSave.setVisible(false);
}
//删除按钮编码
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model = (DefaultTableModel) this.carTable.getModel();
int[] rows = carTable.getSelectedRows();
for(int i=0;i<rows.length;i++){
model.removeRow(rows[i]-i);
JOptionPane.showMessageDialog(null, "Row Deleted"); //the row is deleted but the data isn't
}
}
}
答案 0 :(得分:1)
这里没有从ArrayList中删除项目,因此每次创建JTable模型时,CarList中的所有项目都会添加到JTable中。
您需要添加
CarList.remove(Object_To_Remove);
删除代码。
有关如何从ArrayList中删除对象的更多帮助,请参阅this。 Remove Item from ArrayList StackOverflow上的这个问题可能会对您有所帮助。或者更好的方法是直接进入Docs.
答案 1 :(得分:0)
每次创建JTable模型时,您都会获取汽车列表中的所有项目。您从表模型中删除它们,但永远不会从数组列表中删除项目。您需要修改删除代码以从carList中删除。
您还应该使用较低的驼峰大小写约定命名变量。