Tabellen- Daten laden

MossMan_AT

Mitglied
Hallo,
ich hätte ein Problem, das das Thema Tabellen- speziell das Laden von Daten, die zuvor gespeichert wurden, betrifft.

Aufgabe ist es einen Frame mit dem Namen "Kontaktliste" zu erstellen, der die Felder Nachname, Vorname, Telefon und Email enthält. Dann sollen die Daten aus diesen Feldern mit einem Button in eine Tabelle übernommen werden, die sich darunter befindet. Das funktioniert auch alles, aber aus irgendeinem Grund werden die Daten nie gespeichert, weshalb es dann beim Laden zu einer Exception kommt. Beim Beenden des Programms über den Button Ende oder über das einfache Schließen werden die Daten in einer Datei "Kontakte.dat" gespeichert. Beim erneuten Öffnen wird überprüft, ob eine solche Datei bereits existiert und falls diese existiert, wird sie geladen, was der Übernahme der Daten in die Tabelle entspricht, aber dies geschieht nicht, da keine Daten gespeichert werden.

Vielen Dank!
Noch einen schönen Abend und liebe Grüße!
Simon

Unten ist der Code zu finden:
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Kontaktliste extends /*javax.swing.*/JFrame /*implements TableModelListener, ListSelectionListener*/{

    private JPanel contentPane;
    private JTextField tfdNachname;
    private JLabel lblVorname;
    private JTextField tfdVorname;
    private JTextField tfdTele;
    private JLabel lblTele;
    private JLabel lblEmail;
    private JTextField tfdEmail;
    private JLabel lblKontaktliste;
    private JScrollPane scrollPane;
    private JTable table;
    private TableModel tableModel;
    private String dateiname;
    private File datei;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Kontaktliste frame = new Kontaktliste();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Kontaktliste() {
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e)
            {
                try(var out = new BufferedWriter(new FileWriter(dateiname)))
                {
                    //Zeilen- und Spaltenzahl schreiben:
                    var model = (DefaultTableModel)table.getModel();
                    var zeilenzahl = String.valueOf(model.getRowCount());
                    out.write(zeilenzahl);
                    out.newLine();
                    var spaltenzahl = String.valueOf(model.getColumnCount());
                    out.write(spaltenzahl);
                    out.newLine();
                    
                    for(var i = 0; i < (model.getRowCount()); i++)
                    {
                        for(var j = 0; j < (model.getColumnCount()); j++)
                        {
                            if(model.getValueAt(i, j) != null)
                            {
                                var eintrag = model.getValueAt(i,  j).toString();
                                out.write(eintrag);
                            }
                            else
                            {
                                out.write("");
                            }
                            out.newLine();
                        }
                    }
                    System.exit(0);
                }
                catch(Exception e1)
                {
                    e1.printStackTrace();
                }
            }
        });
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        //title:
        setTitle("Kontakttabelle");
        
        //components:
        JLabel lblNachname = new JLabel("Nachname");
        lblNachname.setBounds(10, 11, 86, 14);
        contentPane.add(lblNachname);
        
        tfdNachname = new JTextField();
        tfdNachname.setBounds(10, 36, 86, 20);
        contentPane.add(tfdNachname);
        tfdNachname.setColumns(10);
        
        lblVorname = new JLabel("Vorname");
        lblVorname.setBounds(106, 11, 86, 14);
        contentPane.add(lblVorname);
        
        tfdVorname = new JTextField();
        tfdVorname.setText("");
        tfdVorname.setBounds(106, 36, 86, 20);
        contentPane.add(tfdVorname);
        tfdVorname.setColumns(10);
        
        tfdTele = new JTextField();
        tfdTele.setBounds(202, 36, 128, 20);
        contentPane.add(tfdTele);
        tfdTele.setColumns(10);
        
        lblTele = new JLabel("Telefonnummer");
        lblTele.setBounds(202, 11, 128, 14);
        contentPane.add(lblTele);
        
        lblEmail = new JLabel("Email");
        lblEmail.setBounds(10, 67, 46, 14);
        contentPane.add(lblEmail);
        
        tfdEmail = new JTextField();
        tfdEmail.setBounds(10, 92, 199, 20);
        contentPane.add(tfdEmail);
        tfdEmail.setColumns(10);
        
        JButton btnÜbernehmen = new JButton("Übernehmen");
        btnÜbernehmen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                //Holen der Daten:
                String nachname =tfdNachname.getText();
                String vorname = tfdVorname.getText();
                String telefon = tfdTele.getText();
                String email = tfdEmail.getText();
                
                //Hinzufügen einer neuen Zeile und Übergeben der Daten:
                var model = (DefaultTableModel)table.getModel();
                model.addRow(new String[] {nachname, vorname, telefon, email});
            }
        });
        btnÜbernehmen.setBounds(219, 91, 111, 23);
        contentPane.add(btnÜbernehmen);
        
        //JTable:
        lblKontaktliste = new JLabel("Kontaktliste:");
        lblKontaktliste.setBounds(10, 123, 86, 14);
        contentPane.add(lblKontaktliste);
        
        scrollPane = new JScrollPane();
        scrollPane.setBounds(10, 148, 414, 67);
        contentPane.add(scrollPane);
        
        table = new JTable();
        scrollPane.setViewportView(table);
        
        tableModel = new DefaultTableModel(new String[][] {}, new String[] {"Nachname", "Vorname", "Telefon", "Email"});
        table.setModel(tableModel);
        
        JButton btnLöschen = new JButton("Markierte Zeile löschen");
        btnLöschen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                if((table.getSelectedRow()) >= 0)
                {
                    var model = (DefaultTableModel)table.getModel();
                    model.removeRow(table.getSelectedRow());
                }
            }
        });
        btnLöschen.setBounds(10, 226, 199, 23);
        contentPane.add(btnLöschen);
        
        JButton btnEnde = new JButton("Ende");
        btnEnde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                try(var out = new BufferedWriter(new FileWriter(dateiname)))
                {
                    //Zeilen- und Spaltenzahl schreiben:
                    var model = (DefaultTableModel)table.getModel();
                    var zeilenzahl = String.valueOf(model.getRowCount());
                    out.write(zeilenzahl);
                    out.newLine();
                    var spaltenzahl = String.valueOf(model.getColumnCount());
                    out.write(spaltenzahl);
                    out.newLine();
                    
                    for(var i = 0; i < (model.getRowCount()); i++)
                    {
                        for(var j = 0; j < (model.getColumnCount()); j++)
                        {
                            if(model.getValueAt(i, j) != null)
                            {
                                var eintrag = model.getValueAt(i,  j).toString();
                                out.write(eintrag);
                            }
                            else
                            {
                                out.write("");
                            }
                            out.newLine();
                        }
                    }
                    System.exit(0);
                }
                catch(Exception e1)
                {
                    e1.printStackTrace();
                }
            }
        });
        btnEnde.setBounds(335, 226, 89, 23);
        contentPane.add(btnEnde);
        
        //Datei laden:
        dateiname = "." + File.separator + "Kontaktdaten.dat";
        datei = new File(dateiname);
        
        
        if(!datei.exists())
        {
            try
            {
                datei.createNewFile();
            }
            catch(Exception e2)
            {
                e2.printStackTrace();
            }
        }
        else
        {
            try(var in = new BufferedReader(new FileReader(dateiname)))
            {
                //Zeilen- und Spaltenzahl lesen:
                var zeilenzahl = Integer.parseInt(in.readLine());
                var spaltenzahl = Integer.parseInt(in.readLine());
                var model = (DefaultTableModel)table.getModel();
                
                for(var i = 0; i < zeilenzahl; i++)
                {
                    model.addRow(new String[] {});
                    for(var j = 0; j < spaltenzahl; j++)
                    {
                        var eintrag = in.readLine();
                        model.setValueAt(eintrag, i, j);
                    }
                }
            }
            catch(IOException ex)
            {
                ex.printStackTrace();
            }
        }
    }
}
 

Oneixee5

Top Contributor
Du kannst das System.exit(0); raus nehmen. Wenn du das unbedingt haben musst, dann mach es in einen finally-Block nach dem Speichern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
T Tabellen-Daten in JSP Java Basics - Anfänger-Themen 4
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
J alternierendes Probing-Verfahren für Hash-Tabellen implementieren Java Basics - Anfänger-Themen 0
B Eclipse Tabellen Farbe ändern? Java Basics - Anfänger-Themen 2
B Sortieren und Filtern von Tabellen Java Basics - Anfänger-Themen 6
S Felder mit Variablen/Tabellen verknüpfen! Java Basics - Anfänger-Themen 3
S Tabellen vergleichen Java Basics - Anfänger-Themen 13
T Tabellen in AWT Java Basics - Anfänger-Themen 4
M SelectionListener bei zwei Tabellen Java Basics - Anfänger-Themen 3
C DB-Tabellen bei Programmstart erstellen Java Basics - Anfänger-Themen 3
G Datenbank Tabellen kopieren Java Basics - Anfänger-Themen 7
G Entität über mehrere Tabellen Java Basics - Anfänger-Themen 2
G [Hibernate] Constraints über mehrere Tabellen Java Basics - Anfänger-Themen 2
G Tabellen Java Basics - Anfänger-Themen 4
E 2 Tabellen mit swing.jtextpain Java Basics - Anfänger-Themen 3
M 5 MySql Tabellen in JTable - variable TableHeader? Java Basics - Anfänger-Themen 2
G Klassenbibliothek zur Erstellung von Tabellen? Java Basics - Anfänger-Themen 3
lomtas Spaltennamen von Tabellen Java Basics - Anfänger-Themen 2
S GUI "Klick-Tabellen", MouseOver Effekte und 2D-Arr Java Basics - Anfänger-Themen 11
B hsqldb (beziehungen zw. Tabellen) Java Basics - Anfänger-Themen 8
P Tabellen Object Java Basics - Anfänger-Themen 3
D Tabellen erstellen/formatieren in Java Java Basics - Anfänger-Themen 4
G fulltext Tabellen Java Basics - Anfänger-Themen 5
P Verknüpfung von Tabellen Java Basics - Anfänger-Themen 7
S Tabellen kopieren in MySQL Java Basics - Anfänger-Themen 6
F Baumstruktur aus 2 DB-Tabellen Java Basics - Anfänger-Themen 6
R Tabellen Java Basics - Anfänger-Themen 5
M dynamische tabellen Java Basics - Anfänger-Themen 2
K Hintergrundfarbe einer Tabellen-Zelle verändern Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben