Ja also das problem sieht so aus...
es sollen daten hinzugefügt werden in die Table und dann gespeichert.
diese daten sollen dann beim erneuten start der progs ausgelesen werden und wieder in die table geschrieben werden. auch jetzt soll man noch neue daten eintragen können und auch wieder speichern.
es sollen daten hinzugefügt werden in die Table und dann gespeichert.
diese daten sollen dann beim erneuten start der progs ausgelesen werden und wieder in die table geschrieben werden. auch jetzt soll man noch neue daten eintragen können und auch wieder speichern.
Code:
package myGui1;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
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.io.OutputStream;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class Main extends JFrame implements TableData
{
public static void main ( String[] args )
{
final JTextField eDatum, eDistanz, eZeit, eOrt;
JButton bHinzu, bSave;
JPanel panel = new JPanel(new GridLayout(1,5));
JFrame frame = new JFrame("Daten");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 535, 500);
frame.setLayout(new BorderLayout());
eDatum = new JTextField("Datum");
panel.add(eDatum);
eDistanz = new JTextField("Distanz");
panel.add(eDistanz);
eZeit = new JTextField("Zeit(Min.)");
panel.add(eZeit);
eOrt = new JTextField("Ort");
panel.add(eOrt);
bHinzu = new JButton("Hinzufügen");
panel.add(bHinzu);
frame.add(BorderLayout.NORTH,panel);
bSave = new JButton("Speichern");
frame.add(BorderLayout.SOUTH,bSave);
final DefaultTableModel model = new DefaultTableModel(columns, 0);
JTable table = new JTable (model);
try{
FileInputStream fis = new FileInputStream("table.dat");
ObjectInputStream o = new ObjectInputStream(fis);
table =(JTable) o.readObject();}
catch(ClassNotFoundException cnfe){
System.err.println(cnfe);
}
catch(FileNotFoundException fnfe){
System.err.println(fnfe);
}
catch(IOException ioe){
System.err.println(ioe);
}
frame.add(BorderLayout.CENTER,(new JScrollPane(table)));
bHinzu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int size = model.getColumnCount();
Vector newDatas = createDataVector(size,eDatum, eDistanz, eZeit, eOrt);
model.addRow(newDatas);
}});
bSave.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
OutputStream fos = null;
try
{
fos = new FileOutputStream("table.dat");
ObjectOutputStream o = new ObjectOutputStream(fos);
o.writeObject (table); //hier ist ein fehler, table kann nicht geschrieben werden wenn es nicht final ist
}
catch (IOException a)
{System.err.println(a);}
finally
{
try {fos.close();} catch(Exception a){}
}
}});
eDatum.addMouseListener(new MouseListener(){
public void mouseEntered(MouseEvent e){
}
public void mousePressed(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
eDatum.setText("");
}
public void mouseReleased(MouseEvent e){
}
});
frame.setVisible(true);
}
public static Vector createDataVector(int size, JTextField eDatum,JTextField
eDistanz,JTextField eZeit,JTextField eOrt){
Vector vector = new Vector(size);
for (int i = 0; i<size; i++){
String text[]=new String[4];
switch (i){
case 0: text[0] = eDatum.getText();
case 1: text[1] = eDistanz.getText();
case 2: text[2] = eZeit.getText();
case 3: text[3] = eOrt.getText();
vector.add(text[i]);
}
}
return vector;
}
}