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序列化的概念,但我并不清楚哪种技术是合适的,以及如何使用它来解决这个问题
# 1 楼答案
如果您不能访问数据库(本地或服务器上),最好的方法可能是使用序列化
考虑使用一个具体的类填充您的^ {< CD1>}。因此,要保存数据,只需使此类实现
Serializable
,然后使用ObjectOutputStream
将其写入文件。然后使用ObjectInputStream
来检索它我真的不记得
JTable
是如何处理数据的,但您可能必须创建一个自定义模型类,该类从AbstractTableModel
中删除,并将数据包含在数组或List
中。但是使用List
更好,因为它更灵活、更易于使用。所以您可以直接序列化列表,并在下次程序运行时检索# 2 楼答案
这取决于你的申请。最简单、最快捷的方法是对象序列化。可以将对象保存到文件中,然后再次加载。您可以对保存表数据的对象执行此操作。这方面有很多教程
您可以扩展序列化的概念,首先将对象转换为人类可读的格式(如XML或JSON),然后将其保存为文件。这样做的好处是,您可以在Java程序以外的其他程序中使用导出的数据。用于编组为XML的框架是JAXB。还有很多关于这方面的教程
最后,您可以使用SQL数据库。数据库将是最有效的替代方案。一个很好的SQL ins Hibernate持久化框架。它主要用于需要快速数据存储后端的大型业务应用程序。当然,您必须为此运行SQL server。还有很多教程可用
我想对你来说,第一种选择是最好的,因为它既快又容易。SQL有点过分;-)
# 3 楼答案
考虑使用^ {CD2>}来保存^ {< CD1>}数据,举例说明here,或^ {CD3>},引用^ ^ a2}。