この問題についてはすでにいくつかの問題を調べましたが、私の問題を解決できませんでした。
以下に示すように、シリアライゼーションによって、my Patient ArrayList
( pList
- クラスの一番上にあるプライベート) のすべてのオブジェクトを「Patient.ser」ファイルに保存します。私が知る限り、これは問題なく動作しています。「patSizeAtSave
」は、ファイルをロードするときに使用する境界としてマークするために使用しているプライベート変数です(以下を参照)
「patModel
」は私DefaultListModel
が使用するものなので、それらのリストに追加されたものを入力しようとしますJLists
GUI
Patient ArrayList(pList)
私の問題:ロードボタンを押すと、以下GUI
のメソッドが呼び出されますが、 JListsloadPatientList()
に何も入れられていないため、まったく機能するかどうかわかりません。
これを修正する方法について何か考えはありますか?
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);
}
}