Olá Pessoal
Estou com um problema no meu programa
O programa guarda dados no ficheiro sem problemas e consigo fazer a vizualização de todos os dados do ficheiro mas quando fecho e volto abrir o programa
para fazer novo cadastro e volto a fazer a vizualição de todos os dados o que me aparece é apenas o último cadastro que fiz.
O que eu queria mesmo era atualizar os dados e não sobrescrever.
abaixo estão as duas classes (Interface gráfica se for necessário e a que aguarda e vizualiza os dados do ficheiro)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Ficha extends JFrame{
ClasseFicha ficha = new ClasseFicha();
private JLabel jlbnome, jlbsobrenome,mostrar,jlbsaldo;
private JTextField jtfnome, jtfsobrenome,jtfsaldo;
private JButton btguardar,btvisualizar,btlocalizar;
public Ficha(){
jlbnome = new JLabel("Nome");
jlbsobrenome = new JLabel("SobreNome");
jlbsaldo = new JLabel("Saldo");
jtfnome = new JTextField(15);
jtfsobrenome = new JTextField(15);
jtfsaldo = new JTextField(15);
btguardar = new JButton("Guardar");
btvisualizar = new JButton("Visualizar");
btlocalizar = new JButton("Localizar");
mostrar = new JLabel("");
setTitle("Agenda");
setSize(300,350);
Tratamento evento = new Tratamento();
btguardar.addActionListener(evento);
btvisualizar.addActionListener(evento);
btlocalizar.addActionListener(evento);
Container tela= getContentPane();
JPanel panel1 = new JPanel();
panel1.add(jlbnome);
panel1.add(jtfnome);
panel1.add(jlbsobrenome);
panel1.add(jtfsobrenome);
panel1.add(jlbsaldo);
panel1.add(jtfsaldo);
JPanel panel2 = new JPanel();
panel2.add(btguardar);
panel2.add(btvisualizar);
panel2.add(btlocalizar);
panel1.setLayout(new GridLayout(3,3,0,2));
panel1.setLayout(new GridLayout(3,3,0,2));
tela.add(panel1,BorderLayout.NORTH);
tela.add(panel2,BorderLayout.CENTER);
setVisible(true);
}
private class Tratamento implements ActionListener{
public void actionPerformed(ActionEvent evento){
if(evento.getSource()==btlocalizar){
String find_name = JOptionPane.showInputDialog("Procurar cliente pelo nome");
Save_File save = new Save_File();
}
if(evento.getSource()==btguardar){
Registar();
jtfnome.setText(null);
jtfsobrenome.setText(null);
jtfsaldo.setText(null);
}
if(evento.getSource()==btvisualizar){
try{
Save_File.ler();
}
catch(Exception ex){
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
}
}
//método registar
public void Registar(){
try{
Save_File.inserir(this);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"fff "+e.getMessage());
}
}
//getters
public String getNome(){ return jtfnome.getText();}
public String getSobrenome(){ return jtfsobrenome.getText();}
public Double getSaldo(){ return Double.parseDouble(jtfsaldo.getText());
}
//main
public static void main(String[] args){
new Ficha();
}
}
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Save_File{
static ArrayList<ClasseFicha> lista = new ArrayList<ClasseFicha>();
public static void inserir(Ficha ficha)throws Exception{
ClasseFicha c = new ClasseFicha();
c.setNome(ficha.getNome());
c.setSobrenome(ficha.getSobrenome());
c.setSaldo(ficha.getSaldo());
System.out.println(lista.size());
lista.add(c);
gravar();
}
public static void gravar()throws Exception{
ObjectOutputStream objecto = new ObjectOutputStream(new FileOutputStream("arquivo.dat"));
objecto.writeObject(lista);
objecto.close();
}
public static void ler()throws Exception{
ObjectInputStream in = new ObjectInputStream(new FileInputStream("arquivo.dat"));
ArrayList<ClasseFicha> arraylist = (ArrayList<ClasseFicha>)in.readObject();
for(ClasseFicha elem : arraylist){
JOptionPane.showMessageDialog(null,"Nome: "+elem.getNome()+"\n"+"SobreNome: "+elem.getSobrenome()+"\n"+"Saldo: "+elem.getSaldo());
}
}
}