Hallo Leute,
heute habe ich mich zum ersten mal mit Outputstream auseinander gesetzt und habe es auch geschafft, Objekte zu speichern. Meine Frage ist, inwiefern meine Methode richtig ist. Hier ist ein kleines Projekt. So würde ich es in Zukunft machen. Für Verbesserungsvorschläge bin ich offen:
heute habe ich mich zum ersten mal mit Outputstream auseinander gesetzt und habe es auch geschafft, Objekte zu speichern. Meine Frage ist, inwiefern meine Methode richtig ist. Hier ist ein kleines Projekt. So würde ich es in Zukunft machen. Für Verbesserungsvorschläge bin ich offen:
Java:
public class Screen extends JFrame implements ActionListener{
private Cars cars = new Cars();
private AtomicInteger carId = new AtomicInteger();
private JButton add = new JButton("Hinzu");
private JButton save = new JButton("Speichern");
private JButton load = new JButton("Laden");
public Screen(){
setSize(500,500);
add.addActionListener(this);
save.addActionListener(this);
load.addActionListener(this);
add(cars.getScrollPane(), BorderLayout.CENTER);
add(add, BorderLayout.EAST);
add(save, BorderLayout.WEST);
add(load, BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
if(btn.equals(save)){
cars.save();
}
if(btn.equals(add)){
Car c = new Car(carId.incrementAndGet());
cars.addCarList(c);
}
if(btn.equals(load)){
cars.load();
}
}
public static void main(String[] args){
new Screen();
}
}
Java:
public class Cars extends JPanel{
private JScrollPane scrollpane;
private List<Car> carList = new ArrayList<Car>();
public Cars(){
scrollpane = new JScrollPane(this);
}
public void save(){
try{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\SpeicherTest\\save.save"));
out.writeObject(carList);
removeAll();
scrollpane.setViewportView(this);
System.out.println("Cars Gespeichert");
}
catch(Exception e){
e.printStackTrace();
}
}
public void load(){
removeAll();
scrollpane.setViewportView(this);
try{
ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\SpeicherTest\\save.save"));
carList = (List<Car>)in.readObject();
for(int i= 0; i<carList.size(); i++){
add(new JButton(carList.get(i).getId()));
}
scrollpane.setViewportView(this);
System.out.println("Cars Geladen");
}
catch(Exception e){
e.printStackTrace();
}
}
public JScrollPane getScrollPane(){
return scrollpane;
}
public void addCarList(Car car){
carList.add(car);
add(new JButton(car.getId()));
scrollpane.setViewportView(this);
}
}
Java:
public class Car implements Serializable{
private String id;
public Car(int id){
this.id = "Car "+id;
}
public String getId(){
return id;
}
}