ArrayList in eine Txt-Datei speichern

Spiri

Mitglied
Tach,

hab zwei Probleme; Einmal will ich die ArrayList in eine Text Datei ohne die beiden Klammern [ ] schreiben. Das zweite Problem ist, dass ich Geburtstag gerne als Date abspeichern möchte, den Befehl aber nicht kenne um ein Datum aus einem JTextField auszulesen. Wie z.B. bei Strings (.getText())

Ich hoffe auf eine schnell Antwort.

Lg Spirit

Java:
package studentenverwaltung;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class StudentenDB extends JFrame {
    
    private JLabel num = new JLabel("Matrikelnummer: ");
    private JLabel vorname = new JLabel("Vorname: ");
    private JLabel nachname = new JLabel("Nachname: ");
    private JLabel geb = new JLabel("Geburtsdatum:");
    private JLabel anzahl = new JLabel("Anzahl Studenten: ");
    private JLabel size = new JLabel();
    
    private JTextField nummer = new JTextField(); 
    private JTextField vname = new JTextField(); 
    private JTextField nname = new JTextField(); 
    private JTextField bday = new JTextField();
    
    private JButton ok = new JButton("OK");
    private JButton save = new JButton("Speichern");
    
     ArrayList<Student> studenten = new ArrayList<Student>();
    private static String result = "";
    
    public StudentenDB(){
        super("StudentenDB");
        this.setLayout( new BorderLayout());
        this.add(makeNorth(), BorderLayout.NORTH);
        this.add(makeCenter(), BorderLayout.CENTER);
        this.add(makeSouth(), BorderLayout.SOUTH);
        this.setSize(500, 200);
        organizeListener();
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    private void organizeListener() {
        ok.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent arg0) {
                if(!nummer.getText().isEmpty() && 
                    !vname.getText().isEmpty() &&
                    !nname.getText().isEmpty() &&
                    !bday.getText().isEmpty()) {     
                studenten.add(addJTextField(nummer,vname,nname,bday));
                
               size.setText(studenten.size() + "");
               nummer.setText("");
               vname.setText("");
               nname.setText("");
               bday.setText("");
                } else {
                    error();
                }
            }            
        });
        save.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent arg0) {
            
                for(int i = 0 ; i<= studenten.size(); i++) {
                    result = studenten.toString();
                    
                    writeToFile("Studis.txt");
                    result = "";
                }
            }
        });
        
    }
public static void writeToFile(String filename) {
        
        BufferedWriter bufferedWriter = null;
        
        try {
            
            //Erzeugt das BufferedWriter Objekt
            bufferedWriter = new BufferedWriter(new FileWriter(filename));
            
            //Beginnt hier zu schreiben
            bufferedWriter.write(result);

            
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //Schließt den BufferedWriter
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    private void error() {
        JDialog temp = new JDialog(this, "Status");
        String msg = "Bitte alle Felder Ausfüllen!";
        temp.add(new JLabel(msg));
        temp.setLocationRelativeTo(this);
        temp.setModal(true);
        temp.setResizable(false);
        temp.setSize(160,100);
        temp.setVisible(true);
                
    }

    private Component makeSouth() {
        JPanel pnl = new JPanel();
        pnl.setLayout(new BorderLayout());
        pnl.add(anzahl, BorderLayout.WEST);
        pnl.add(size, BorderLayout.EAST);
        return pnl;
    }
    
    private Student addJTextField(JTextField a, JTextField b, 
        JTextField c, JTextField d) {
        String a1 = a.getText();
        String b1 = b.getText();
        String c1 = c.getText();
        String d1 = d.getText();
        Student s1 = new Student(a1, b1, c1 , d1 );        
        return s1;
    }

    private Component makeCenter() {
        JPanel pnl = new JPanel();
        pnl.setLayout(new BorderLayout());
        pnl.add(makeCenterSouth(), BorderLayout.SOUTH);
        
        return pnl;
    }

    private Component makeCenterSouth() {
        JPanel pnl = new JPanel();
        pnl.setLayout(new FlowLayout());
        pnl.add(ok);
        pnl.add(save);
        return pnl;
    }

    private Component makeNorth() {
        JPanel pnl = new JPanel();
        pnl.setLayout(new GridLayout(4, 2));
        pnl.add(num);
        pnl.add(nummer);
        pnl.add(vorname);
        pnl.add(vname);
        pnl.add(nachname);
        pnl.add(nname);
        pnl.add(geb);
        pnl.add(bday);
        return pnl;
    }

    public static void main(String[] args) {
        new StudentenDB();

    }

}

Java:
package studentenverwaltung;

import java.util.Date;

public class Student {

    private String matrikelnummer;
    private String vorname;
    private String nachname;
    private String geburtsdatum;
    
    public Student(String matrikelnummer, String vorname, String nachname,
        String geburtsdatum) {
        super();
        this.matrikelnummer = matrikelnummer;
        this.vorname = vorname;
        this.nachname = nachname;
        this.geburtsdatum = geburtsdatum;
    }

    public String getMatrikelnummer() {
        return matrikelnummer;
    }

    public String getVorname() {
        return vorname;
    }

    public String getNachname() {
        return nachname;
    }

    public String getGeburtsdatum() {
        return geburtsdatum;
    }
    
    public String toString() {
        String result;
        
        result = getMatrikelnummer() + ", " + getVorname() + ", " 
            + getNachname() + ", " + getGeburtsdatum() 
            + System.getProperty("line.separator");
            
        return result;
    }
    
}
 
zu 1: wenn du einfach nur die [] wegkriegen willst, dann versuch es doch mit .substring, also:

Java:
String realResult=result.substring(1,result.length()-1);

Nicht unbedingt die sauberste aber dafür eine ziemlich einfach Lösung.

zu 2: Aus einem JTextField kriegst du immer nur den Text. Wenn du den in ein Datum umwandeln willst musst du den Text parsen. Dafür kannst du die Klasse DateFormat benutzen. Das geht folgendermaßen:

Java:
String dateText=dateTextField.getText();
DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM);
  try {
            Date date=dateFormat.parse(tDate);
        } catch (ParseException e) {
            e.printStackTrace(); 
        }
 

Neue Themen


Zurück
Oben