Java Daten in Liste speichern -> Listeninhalt in Datei speichern

b1gsh0w

Cadet 4th Year
Registriert
Mai 2009
Beiträge
91
Edit: Haha, da sitzt man Ewigkeiten davor und findet den Fehler nicht...kaum macht man einen Thread auf und schon findet und beseitigt man ihn. Klasse^^

Heyho,

hab mal so aus Übungszwecken ein Programm schreiben wollen, das eingegebene Daten aus einem JTextField nimmt, sie in einer Liste speichert und den Listeninhalt in einer Datei speichert. Man soll also einen String eingeben, durch Buttonklick wird er der liste hinzugefügt und in eine Datei gespeichert. Wenn man noch einen String hinzufügen will, soll man ihn wieder ins Textfeld eintragen. Per Klick soll dann dieses Element an die nächste Stelle in der Liste gespeichert werden und beide Elemente in einer Datei gespeichert werden uswusf.

Das Speichern funzt noch nicht richtig, es wird die Datei erstellt, aber sie ist leer. Hab das Ganze vorher mal mit einem normalen Array getestet und das funktionierte. Hat jemand einen Tipp, wo ich was falsch gemacht habe?

Gruß

Code sieht folgendermaßen aus:

GUI mit ActionListenern:

Code:
package CDListGUI;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class CDList extends JFrame{
	
	//String[] bandArray;
	//String[] datenSpeichern;
	
	List<String> bandListe;
	String data;
	
	JLabel albumLabel;
	JLabel auswahlLabel;
	JLabel neuerEintragLabel;
	JLabel platzhalterLabel;
	
	JTextField neuerEintragField;
	
	JPanel cdListPanel;
	JPanel auswahlPanel;
	JPanel okPanel;
	JPanel eintragPanel;
	JPanel hinzufuegenPanel;
	
	JButton okButton;
	JButton hinzufuegenButton;
	JComboBox auswahlListe;
	
	DateiTXT ds;
	
	public CDList(){
		
		//bandArray = new String[100];
		
		ds = new DateiTXT();
		
		albumLabel = new JLabel("Album");
		auswahlLabel = new JLabel("Auswahl");
		neuerEintragLabel = new JLabel("Neuer Eintrag");
		platzhalterLabel = new JLabel();
		
		neuerEintragField = new JTextField();
		
		cdListPanel = new JPanel();
		auswahlPanel = new JPanel();
		okPanel = new JPanel();
		eintragPanel = new JPanel();
		hinzufuegenPanel = new JPanel();
		
		okButton = new JButton("OK");
		hinzufuegenButton = new JButton("Hinzufügen");
		auswahlListe = new JComboBox();
		
		auswahlListe.setPreferredSize(new Dimension(175,25));
		
		hinzufuegenPanel.setLayout(new BorderLayout());
		hinzufuegenPanel.add(hinzufuegenButton, BorderLayout.CENTER);		
		
		eintragPanel.setLayout(new BorderLayout());
		eintragPanel.add(neuerEintragLabel, BorderLayout.NORTH);
		eintragPanel.add(neuerEintragField, BorderLayout.CENTER);
		eintragPanel.add(hinzufuegenPanel, BorderLayout.SOUTH);
		
		auswahlPanel.add(auswahlListe);
		okPanel.add(okButton);
		
		this.setLayout(new BorderLayout());
		this.add(eintragPanel, BorderLayout.NORTH);
		this.add(auswahlPanel, BorderLayout.CENTER);
		this.add(okPanel, BorderLayout.SOUTH);
		this.setTitle("CDList");
		this.setSize(200,200);
		this.setResizable(false);
		
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		this.getContentPane();		
		this.setVisible(true);
		
		
		hinzufuegenButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				
				bandListe = new List<String>(100);
				//datenSpeichern = new String[100];
				data = neuerEintragField.getText();
				bandListe.addElement(data);
				ds.dateiSpeichern(bandListe);
				
			}
		});
	}
			
	
	public static void main(String[] args){
		
		new CDList();
	}
}

Methode zum Speichern (und Laden):

Code:
package CDListGUI;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

import javax.swing.JTextField;

public class DateiTXT {
	
	BufferedReader in;
	BufferedWriter out;
	
	JTextField feld1 = new JTextField();
	
	DateiTXT(){}
	
	public List<String> dateiLaden(){
	
		List<String> bandListe = null;
		
		try{
			in = new BufferedReader(new FileReader("bandliste"));
		
			bandListe = new List<String>(100);
		
			bandListe.addElement(in.readLine());
			
			in.close();
		}
		catch(FileNotFoundException e){}
		catch(IOException e){}
		return bandListe;
	}
	
	public void dateiSpeichern(List<String> datenSpeichern){
		
		List<String> bandListe = new List<String>(100);		
		
		try{
			out = new BufferedWriter(new FileWriter("bandliste.txt"));
				
			for(String band : bandListe){
				out.write(band);
		    	out.newLine();
			}
			
			out.close();
		}
		catch(FileNotFoundException e1){}
		catch(IOException e){}
	}

}

Implementierung der gen. Liste (hab ich aus einem Buch)

Code:
package CDListGUI;

import java.util.*;

public class List<E> implements Iterable<E> {

	
	private Object[] data;
	private int size;
	
	public List(int maxGroesse){
		this.data = new Object[maxGroesse];
		this.size = 0;
	}
	
	public void addElement(E element){
		if(size >= data.length){
			throw new ArrayIndexOutOfBoundsException();
		}
		data[size++] = element;
	}
	
	public int size(){
		return size;
	}
	
	public E elementAt(int pos){
		if(pos >= data.length){
			throw new NoSuchElementException();
		}
		return (E)data[pos];	
	}
	
	@Override
	public Iterator<E> iterator() {
		
		return new Iterator<E>(){

			int pos = 0;
			
			@Override
			public boolean hasNext() {
				return pos < size;
			}

			@Override
			public E next() {
				if(pos >= size){
					throw new NoSuchElementException();
				}
				return (E) data[pos++];
			}

			@Override
			public void remove() {
				throw new UnsupportedOperationException();
			}
		};
	}
}
 
Zuletzt bearbeitet:
Zurück
Oben