从Jtable中删除行后保存

时间:2014-01-27 17:35:55

标签: java jtable row

我有一个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

            }
}
}                  

2 个答案:

答案 0 :(得分:1)

这里没有从ArrayList中删除项目,因此每次创建JTable模型时,CarList中的所有项目都会添加到JTable中。

您需要添加

CarList.remove(Object_To_Remove);

删除代码。

有关如何从ArrayList中删除对象的更多帮助,请参阅thisRemove Item from ArrayList StackOverflow上的这个问题可能会对您有所帮助。或者更好的方法是直接进入Docs.

答案 1 :(得分:0)

每次创建JTable模型时,您都会获取汽车列表中的所有项目。您从表模型中删除它们,但永远不会从数组列表中删除项目。您需要修改删除代码以从carList中删除。

您还应该使用较低的驼峰大小写约定命名变量。

  • 我会创建自己的包含汽车列表的表模型,以便表模型本身可以直接从汽车列表中删除东西。除非您的汽车列表的用例与您在JTable中显示的内容不同步。