在我的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");
答案 0 :(得分:0)
每次添加新对象时,您目前正在编写上一个对象。
致电时:
fileOutputStream = new FileOutputStream("D:\\employee1.txt")
您正在撰写旧的employee1.txt
您可以通过读取和写入文件的ArrayList对象来解决这个问题。