Java 将JTable编辑保存到二维数组

Java 将JTable编辑保存到二维数组,java,swing,jtable,defaulttablemodel,Java,Swing,Jtable,Defaulttablemodel,我有一个JTable,它的单元格是可编辑的。但是,如果我编辑单元格并刷新表。更改不会保存。我是这样定义表的: String [] columnNames = {"Application number", "Name", "date", "fileLoc", "Coun

我有一个JTable,它的单元格是可编辑的。但是,如果我编辑单元格并刷新表。更改不会保存。我是这样定义表的:

    String [] columnNames = {"Application number",
                            "Name",
                            "date",
                            "fileLoc",
                            "Country"};
    //Data for the table
    String [][] data = table.tableArray;//tableArray is an array of array of strings.

    TableModel model = new DefaultTableModel(data, columnNames);
    JTable mainTable = new JTable(model);
    model.isCellEditable(data.length,columnNames.length);
    contentPane.add(new JScrollPane (mainTable));
我在网上浏览了一下,但似乎找不到任何关于保存对手机所做更改的建议。欢迎任何帮助


我想我不是在刷新桌子。我使用frame.dispose() 然后创建一个新的框架,其中表格位于中

  • 然后,您丢失了在当前DefaultTableModel中所做的所有更改

  • 不要使用新的DefaultTableModel和新的JTable创建新的JFrame

  • TableCellEditor中的所有更改都是在JTables视图中显示的更改

  • JTable(及其模型)已为此作业做好准备,不需要在运行时重新创建这些对象

  • DefaultTableModel已实现所有通知程序,不需要重写任何其他事件,也不需要通过编程方式重写fireXxxXxx(),但AbstractTableModel需要这些事件

  • 为JTable
    mainTable.putClientProperty(“terminateEditOnFocusLost”,Boolean.TRUE)定义添加此代码行

  • DefaultTableModel重新呈现所需的二维阵列


刷新表格。你怎么刷新桌子的?我想我没有刷新桌子。我使用frame.dispose()创建了一个新的框架,其中表位于.Post中,完整的代码显示了问题所在。我尝试过这样做,如果我向您的模型中添加一个
TableModelListener
,它会在我更改单元格时触发。您的模型已更新。模型已更新。使用
DefaultTableModel
时没有问题。可能还有其他问题。发布以获得更快的帮助。谢谢您的建议。是否可以对表所基于的2D arraylist的JTable save进行更改?原因是我需要保存这个数组,并在程序重新启动时重新加载它。谢谢。@Hoggie1790查看以获取模型正在使用的数据。+1,解决此问题的关键是表客户机属性,如中所述。