Hallo zusammen,
momentan befasse ich mich mit dem Aus- und Einlesen von Textdatein mittels einer GUI. Die GUI mit jeweils einen Schreiben-, Lesen- und Beenden- Buttons sowie jeweils ein Textfeld (Eingabefeld) und ein Textarea(Ausgabefeld), habe ich mittels des Netbeans GUI Builder erstellt.
Ziel des Programms soll es sein in eine festgelegte Datei neue Zeilen mit Inhalt schreiben zu können sowie den Inhalt der Datei wieder auslesen zu können.
Das Programm funktioniert an sich, ABER da hat sich iwie ein Fehler eingeschlichen den ich mir einfach nicht erklären kann:
Schreibe ich z.B. mehrere Zeilen mittels meines Schreiben Buttons in die Datei nd betätige dann den Lesen Button, wird mir die Datei korrekt ausgelsen und ausgegeben.
Wenn ich nun aber wieder eine Zeile hinzufügen lasse, wird beim anschließendem Betätigen des Lesen Buttons, anstatt der letzten eingegebenen Zeile (Zeile sechs) wieder die erste Zeile angegeben. (In der Textdatei selbst ist jedoch alles richtig)

Edit: Beim Benutzen des Lesen-Buttons wird der Inhalt im Textarea erst gelöscht, dann die Zeilen in der Datei erneut ausgelsen und im Textarea ausgegeben.
Mein Code:
Vlt kann mir einer von euch auf die Sprünge helfen.
momentan befasse ich mich mit dem Aus- und Einlesen von Textdatein mittels einer GUI. Die GUI mit jeweils einen Schreiben-, Lesen- und Beenden- Buttons sowie jeweils ein Textfeld (Eingabefeld) und ein Textarea(Ausgabefeld), habe ich mittels des Netbeans GUI Builder erstellt.
Ziel des Programms soll es sein in eine festgelegte Datei neue Zeilen mit Inhalt schreiben zu können sowie den Inhalt der Datei wieder auslesen zu können.
Das Programm funktioniert an sich, ABER da hat sich iwie ein Fehler eingeschlichen den ich mir einfach nicht erklären kann:
Schreibe ich z.B. mehrere Zeilen mittels meines Schreiben Buttons in die Datei nd betätige dann den Lesen Button, wird mir die Datei korrekt ausgelsen und ausgegeben.

Wenn ich nun aber wieder eine Zeile hinzufügen lasse, wird beim anschließendem Betätigen des Lesen Buttons, anstatt der letzten eingegebenen Zeile (Zeile sechs) wieder die erste Zeile angegeben. (In der Textdatei selbst ist jedoch alles richtig)

Edit: Beim Benutzen des Lesen-Buttons wird der Inhalt im Textarea erst gelöscht, dann die Zeilen in der Datei erneut ausgelsen und im Textarea ausgegeben.
Mein Code:
Java:
import java.io.*;
import java.util.ArrayList;
public class GUI_HUI extends javax.swing.JFrame {
ArrayList<String> Auslesen=new ArrayList<String>();
File Datei=new File("Lieferant.txt");
/**
* Creates new form GUI_HUI
*/
public GUI_HUI() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
opMeldung = new javax.swing.JOptionPane();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
tfEingabe = new javax.swing.JTextField();
btSchreiben = new javax.swing.JButton();
btLesen = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
taAusgabe = new javax.swing.JTextArea();
btBeenden = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
jLabel1.setText("Datei auslesen/schreiben");
jLabel2.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
jLabel2.setText("Text");
tfEingabe.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
btSchreiben.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
btSchreiben.setText("Schreiben");
btSchreiben.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btSchreibenActionPerformed(evt);
}
});
btLesen.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
btLesen.setText("Lesen");
btLesen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btLesenActionPerformed(evt);
}
});
taAusgabe.setColumns(20);
taAusgabe.setRows(5);
jScrollPane1.setViewportView(taAusgabe);
btBeenden.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
btBeenden.setText("Beenden");
btBeenden.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btBeendenActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(148, 148, 148)
.addComponent(jLabel1)
.addContainerGap(99, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(btBeenden)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 374, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addGap(36, 36, 36)
.addComponent(tfEingabe, javax.swing.GroupLayout.PREFERRED_SIZE, 227, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(btSchreiben)
.addGap(18, 18, 18)
.addComponent(btLesen)))
.addGap(50, 50, 50))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(33, 33, 33)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(tfEingabe, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btSchreiben)
.addComponent(btLesen))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btBeenden)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void btBeendenActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void btSchreibenActionPerformed(java.awt.event.ActionEvent evt) {
try{
FileWriter fw=new FileWriter(Datei,true);
String eingabe=tfEingabe.getText();
fw.write(eingabe+"\n");
fw.close();
tfEingabe.setText("");
taAusgabe.setText("");
}
catch(IOException e){
opMeldung.showMessageDialog(null,"Fehler beim Schreiben.");
}
}
private void btLesenActionPerformed(java.awt.event.ActionEvent evt) {
try{
taAusgabe.setText("");
FileReader fr=new FileReader(Datei);
LineNumberReader lnr=new LineNumberReader(fr);
int zähler=0;
try{
while(lnr.ready()==true){
Auslesen.add(lnr.readLine());
taAusgabe.append(Auslesen.get(zähler)+"\n");
zähler++;
}
fr.close();
}
catch(IOException e){
opMeldung.showMessageDialog(null,"Fehler beim Auslesen!");
}
}
catch(IOException e){
opMeldung.showMessageDialog(null,"Fehler beim Lesen!");
}
}