【发布时间】:2013-03-19 01:16:36
【问题描述】:
我已经在这个问题上查看了一些问题,但无法解决我的问题。
如下所示,我通过序列化将我的Patient ArrayList(pList - 这是类顶部的私有对象)中的所有对象保存到“Patient.ser”文件中。据我所知,这是没有问题的。 “patSizeAtSave”是一个私有变量,我在加载文件时用来标记为绑定(见下文)
“patModel”是我在GUI 中用于JLists 的DefaultListModel,所以我尝试用添加回Patient ArrayList(pList) 的内容填充这些列表
我的问题:当我点击GUI 上的加载按钮时,它会调用下面的loadPatientList() 方法,但我的JLists 中没有任何内容,所以我不知道它是否有效一点也不。
关于如何解决这个问题的任何想法?
private void savePatientList() throws FileNotFoundException {
try
{
FileOutputStream fs = new FileOutputStream("Patient.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
for(Patient p: pList)
{
os.writeObject(p);
}
fs.close();
os.close();
patSizeAtSave = pList.size();
JOptionPane.showMessageDialog(jTabPane, "Save Complete!", "Notification", JOptionPane.INFORMATION_MESSAGE);
}
catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void loadPatientList()
{
FileInputStream fs;
ObjectInputStream is;
try
{
fs = new FileInputStream("Patient.ser");
is = new ObjectInputStream(fs);
for(int i = 0; i < patSizeAtSave; i++)
{
Patient p = (Patient) is.readObject();
pList.add(p);
patModel.addElement(p.getPNo() + ": " + p.getPName());
}
jListPatient.setModel(patModel);
jListPatient2.setModel(patModel);
fs.close();
is.close();
}
catch (FileNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
【问题讨论】:
标签: java arraylist load jlist serializable