Jeg har lavet en GUI hvor brugeren kan indtaste nogle parameter. Når trykker på gem. Gemmes oplysningerne som et object. her er min ActionListener fra gui. private class ButtonHandler implements ActionListener{
@Override public void actionPerformed(ActionEvent e) {
if ( e.getSource()==btnGem){
try {
el = new EL(ElMånedeField.getText(),ElÅrField.getText(), Double.parseDouble(ElMåleAfTextField.getText()),Double.parseDouble(ElFaktiskField.getText()));
if (!el.getMåneder().equals(outputMM) ){ JOptionPane.showMessageDialog(null,"Ukendt Månede ?","Inane error",JOptionPane.ERROR_MESSAGE); }else if(!el.getYear().equals(outputYY)){ JOptionPane.showMessageDialog(null,"Ukendt År ?","Inane error",JOptionPane.ERROR_MESSAGE); }else{ System.out.println(el); save = new ObjectStreamHandler(); save.saveObject(el,outputYY);
Her er min class der skal gemme og læse objectet tilbage: import java.io.EOFException; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList;
import javax.swing.JOptionPane;
public class ObjectStreamHandler { private ObjectOutputStream outputStream; private ObjectInputStream ois; private ArrayList<Object>energi;
public void saveObject(Object o,String fileName){ try { outputStream = new ObjectOutputStream(new FileOutputStream(fileName+".dat",true));
Hej arne_v :-) Jeg har prøvet at ændre min ActionListener: private class ButtonHandler implements ActionListener{
@Override public void actionPerformed(ActionEvent e) {
if ( e.getSource()==btnGem){
try {
el = new EL(ElMånedeField.getText(),ElÅrField.getText(),Double.parseDouble(ElMåleAfTextField.getText()),Double.parseDouble(ElFaktiskField.getText())); elObjectsCollector = new ArrayList<Object>();
Hej arne_v Jeg har fået programmet til at virke med ArrayList, men det er stadigvæk et problem med at gemme til filen. Fordi fx. hvis brugeren lukker programmet ned og ønsker senere i fremtiden at indtaste nye data ind i filen. så overskriver den jo arrayet. Og de gamle oplysninger er gået tabt.. hvordan kan jeg lave det sådan at den husker de gamle data med objectStream? Her er et lille udsnit af mit program som det ser ud nu efter de nye ændringer:
Min ActionListener:
@Override public void actionPerformed(ActionEvent e) {
if ( e.getSource()==btnGem){
try {
el = new EL(ElMånedeField.getText(),ElÅrField.getText(),Double.parseDouble(ElMåleAfTextField.getText()),Double.parseDouble(ElFaktiskField.getText()));
if (!el.getMåneder().equals(outputMM) ){ JOptionPane.showMessageDialog(null,"Ukendt Månede ?","Inane error",JOptionPane.ERROR_MESSAGE); }else if(!el.getYear().equals(outputYY)){ JOptionPane.showMessageDialog(null,"Ukendt År ?","Inane error",JOptionPane.ERROR_MESSAGE); }else{
elObjectsCollector.add(el); System.out.println(elObjectsCollector); save = new ObjectStreamHandler(); save.saveObject(elObjectsCollector,outputYY); // arrayet og filenavn sendes videre til metoden saveObject }
} catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null,"Ukendt format ?","Inane error",JOptionPane.ERROR_MESSAGE);
// laes liste med alle eksisterende objekter ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FNM)); ArrayList<Object> lst = (ArrayList<Object>) ois.readObject(); ois.close(); // tilfoej nyt objekt til liste lst.add(o); // gem liste med baade de gamle og det nye objekt ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FNM)); oos.writeObject(lst); oos.close();
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.