如何使用反序列化从文本文件中检索java swing中的完整数据

时间:2014-02-21 18:01:16

标签: java swing

在我的Swing Employee工资单项目中,只要我按下保存按钮,员工详细信息就会添加到文件中。每次点击保存,详细信息都会填充在Jtable上。这是我的序列化代码。但是当我尝试检索时完成数据到Jtable,最近添加的细节显示在Jtable上。我无法检索完整的数据..

我不知道我哪里出错了......朋友需要你提出宝贵的建议。

  jsubmitbutton.addActionListener(new ActionListener(){

@Override
 public void actionPerformed(ActionEvent e)  {

 employeeInfo.setEmployeeId(Integer.parseInt(jId.getText()));
            employeeInfo.setName((String) jName.getText());
            employeeInfo.setSalary(Double.parseDouble(jSalary.getText()));
            employeeInfo.setHRA(Double.parseDouble(jHRA.getText()));
            employeeInfo.setMedical(Double.parseDouble(jMedical.getText()));
            employeeInfo.setPF(Double.parseDouble(jPF.getText()));
            employeeInfo.setPT(Double.parseDouble(jPT.getText()));
            employeeInfo.setNetSalary(Double.parseDouble(jNetSalary.getText()));
            employeeInfo.setGrossSalary(Double.parseDouble(jGrossSalary.getText()));
            Object Gender = jgenderbox.getSelectedItem();
            Object Dep = jdepartmentbox.getSelectedItem();
            Object DateOfJoining = dojspinner.getValue();
            Object DateOfBirth = dobspinner.getValue();
            employeeInfo.setHouse(new AddressDemo((String) jStreet.getText(),(String) jCity.getText(),Integer.parseInt(jPinCode.getText())));
            employeeInfo.setOffice(new AddressDemo( (String) jtextarea4.getText(), (String) jtextarea5.getText(),Integer.parseInt(jpincode.getText())));
            employeeInfo.setSkills((String) jSkills.getText());

            model21.addRow(new Object [] {employeeInfo.getEmployeeId()
                    ,employeeInfo.getName()
                    ,employeeInfo.getSalary()
                    ,employeeInfo.getHRA()
                    ,employeeInfo.getMedical()
                    ,employeeInfo.getPF()
                    ,employeeInfo.getPT()
                    ,employeeInfo.getNetSalary()
                    ,employeeInfo.getGrossSalary(),employeeInfo.getGender()
                    ,gender.valueOf((String)jgenderbox.getSelectedItem())
                    //,employeeInfo.getDep()
                    ,dep.valueOf((String)jdepartmentbox.getSelectedItem())
                    ,((Date)dojspinner.getValue())
                    ,((Date)dobspinner.getValue())
                    //,employeeInfo.getDateOfJoining()
                  //  ,employeeInfo.getDateOfBirth()
                    ,employeeInfo.getHouse()
                    ,employeeInfo.getOffice()
                    ,employeeInfo.getSkills()});try {

FileOutputStream fileOutputStream;
fileOutputStream = new FileOutputStream("D:\\employee1.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(employeeInfo);
JOptionPane.showMessageDialog(EmployeeDemo.this,"Data is successfully inserted into database.");
objectOutputStream.close();
fileOutputStream.close();}catch (IOException{JOptionPane.showMessageDialog(EmployeeDemo.this,"Chutiyapa ho gaya!!");}


}   });
 jshow.addActionListener(new ActionListener() 
 {
   @Override
public void actionPerformed(ActionEvent e) {

   EmployeeInfo employeeInfo = null;

        try 
{
        FileInputStream fileInputStream;
        fileInputStream = new FileInputStream("D:\\employee1.txt");
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
         employeeInfo = (EmployeeInfo)objectInputStream.readObject();
         objectInputStream.close();
            fileInputStream.close();

}

        catch (Exception e1)
        {
              JOptionPane.showMessageDialog(EmployeeDemo.this,"Data not Entered!");         
        }
model21.addRow(new Object [] {employeeInfo.getEmployeeId()
        ,employeeInfo.getName()
        ,employeeInfo.getSalary()
        ,employeeInfo.getHRA()
        ,employeeInfo.getMedical()
        ,employeeInfo.getPF()
        ,employeeInfo.getPT()
        ,employeeInfo.getNetSalary()
        ,employeeInfo.getGrossSalary()
        ,gender.valueOf((String)jgenderbox.getSelectedItem())
        ,dep.valueOf((String)jdepartmentbox.getSelectedItem())
        ,((Date)dojspinner.getValue())
        ,((Date)dobspinner.getValue())
        ,employeeInfo.getHouse()
        ,employeeInfo.getOffice()
        ,employeeInfo.getSkills()});
        System.out.println("Done");

1 个答案:

答案 0 :(得分:0)

每次添加新对象时,您目前正在编写上一个对象。

致电时:

fileOutputStream = new FileOutputStream("D:\\employee1.txt")

您正在撰写旧的employee1.txt

您可以通过读取和写入文件的ArrayList对象来解决这个问题。