有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing在java中持久化对话框的数据

if(e.getActionCommand().equals("save to file"))
    {
        System.out.println("save is pressed");
        StringBuffer fileContent = new StringBuffer();
        TableModel tModel = m_table.getModel();
        for (int i = 1; i < tModel.getRowCount(); i++) 
        {
         for(int j=0;j<tModel.getColumnCount();j++)
         {
            Object cellValue = tModel.getValueAt(i, j);
            // ... continue to read each cell in a row
            fileContent.append(cellValue);
            // ... continue to append each cell value
            fileContent.append(" ");
         }
         fileContent.append("\n");
        }
        FileWriter fileWriter;
        try {
            fileWriter = new FileWriter(new File("data.txt"));
            fileWriter.write(fileContent.toString());
            fileWriter.flush();
            fileWriter.close();
            }
        catch (IOException e1) 
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

我创建了一个JDialog,其中有一个表。我可以通过单击按钮将表格数据保存到文件中,但我要做的是将该数据保留在表格中,以便在下次运行程序时,按下确认按钮时,该数据可用并显示在表格中。虽然我阅读了Java持久性和Java序列化的概念,但我并不清楚哪种技术是合适的,以及如何使用它来解决这个问题


共 (3) 个答案

  1. # 1 楼答案

    如果您不能访问数据库(本地或服务器上),最好的方法可能是使用序列化

    考虑使用一个具体的类填充您的^ {< CD1>}。因此,要保存数据,只需使此类实现Serializable,然后使用ObjectOutputStream将其写入文件。然后使用ObjectInputStream来检索它

    我真的不记得JTable是如何处理数据的,但您可能必须创建一个自定义模型类,该类从AbstractTableModel中删除,并将数据包含在数组或List中。但是使用List更好,因为它更灵活、更易于使用。所以您可以直接序列化列表,并在下次程序运行时检索

  2. # 2 楼答案

    这取决于你的申请。最简单、最快捷的方法是对象序列化。可以将对象保存到文件中,然后再次加载。您可以对保存表数据的对象执行此操作。这方面有很多教程

    您可以扩展序列化的概念,首先将对象转换为人类可读的格式(如XML或JSON),然后将其保存为文件。这样做的好处是,您可以在Java程序以外的其他程序中使用导出的数据。用于编组为XML的框架是JAXB。还有很多关于这方面的教程

    最后,您可以使用SQL数据库。数据库将是最有效的替代方案。一个很好的SQL ins Hibernate持久化框架。它主要用于需要快速数据存储后端的大型业务应用程序。当然,您必须为此运行SQL server。还有很多教程可用

    我想对你来说,第一种选择是最好的,因为它既快又容易。SQL有点过分;-)

  3. # 3 楼答案

    考虑使用^ {CD2>}来保存^ {< CD1>}数据,举例说明here,或^ {CD3>},引用^ ^ a2}。