# Speicher Architektur fuer cardlayout



## elmato (20. Jun 2005)

hallo leute,
ich wollte mal nach ein paar inspirienenden gedanke fragen da ich im moment nicht so recht weiter weiss 
ich habe ein Programm das einen Report erstellt. Es gibt 20 Panels die unterschiedlich aussehen(textfelder, textareas, einfuegbare bilder etc), das ganze ist ein cardlayout, so das der user einen "fragebogen" nach dem anderen ausfuellen kann. 
Nun moechte ich das ganze gerne speichern und hier faengt mein problem an, wie mache ich das am besten, ich meine es muss doch eine bessere moeglichkeut geben als sich die einzelnen daten aus den feldern zu holen und diese dann in eine datei zu schreiben, doch meine versuche ein ganzes panel zu speichern und wieder zu laden waren nicht ganz erfolgreich, er laed das panel zwar aber nicht die eingegebenen daten in den textfeldern etc. koennt ihr mir ein paar tips und literatur vorschlaege geben?
vielen dank im vorraus


----------



## André Uhres (25. Okt 2005)

> es muss doch eine bessere moeglichkeut geben als sich die einzelnen daten aus den feldern zu holen und diese dann in eine datei zu schreiben

Sicher! Hier ein Beispiel:

```
/*
 * Card_Layout_Demo.java
 */
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Card_Layout_Demo extends JFrame implements WindowListener, ActionListener{
    public Card_Layout_Demo() {
        setTitle("Card Layout Demo");
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        addWindowListener(this);
        setSize(400,300);
        setLocationRelativeTo(null);
        cardLayout = new CardLayout();
        cards = new JPanel(cardLayout);
        panel1 = new JPanel();
        label1 = new JLabel("Panel 1");
        textF1 = new JTextField("TEXT 1");
        textF1.setPreferredSize(new Dimension(150,25));
        panel2 = new JPanel();
        label2 = new JLabel("Panel 2");
        textF2 = new JTextField("TEXT 2");
        textF2.setPreferredSize(new Dimension(150,25));
        panel3 = new JPanel();
        label3 = new JLabel("Panel 3");
        textF3 = new JTextField("TEXT 3");
        textF3.setPreferredSize(new Dimension(150,25));
        toolbar = new JToolBar();
        toolbar.setFloatable(false);
        button1 = new JButton("Panel 1");
        button2 = new JButton("Panel 2");
        button3 = new JButton("Panel 3");
        panel1.add(label1);
        panel1.add(textF1);
        cards.add(panel1, "Panel-1");
        panel2.add(label2);
        panel2.add(textF2);
        cards.add(panel2, "Panel-2");
        panel3.add(label3);
        panel3.add(textF3);
        cards.add(panel3, "Panel-3");
        getContentPane().add(cards, BorderLayout.CENTER);
        button1.addActionListener(this);
        toolbar.add(button1);
        button2.addActionListener(this);
        toolbar.add(button2);
        button3.addActionListener(this);
        toolbar.add(button3);
        getContentPane().add(toolbar, BorderLayout.NORTH);
        setVisible(true);
    }
    public static void main(String[] args) {
        Card_Layout_Demo frame = null;
        File serializeFile = new File(serializeFilename);
        if (serializeFile.exists()) {
            try {
                FileInputStream fileIn =
                        new FileInputStream(serializeFile);
                ObjectInputStream in = new ObjectInputStream(fileIn);
                frame = (Card_Layout_Demo)in.readObject();
                frame.setVisible(true);
            } catch(IOException ioe) {
                System.out.println("Error reading file: " + ioe);
            } catch(ClassNotFoundException cnfe) {
                System.out.println("No such class: " + cnfe);
            }
        } else {
            frame = new Card_Layout_Demo();
        }
    }
    public void windowOpened(WindowEvent e) {}
    public void windowClosing(WindowEvent e) {
        try {
            FileOutputStream fileOut =
                    new FileOutputStream(serializeFilename);
            ObjectOutputStream out =
                    new ObjectOutputStream(fileOut);
            out.writeObject(this);
            out.flush();
            out.close();
        } catch(IOException ioe) {
            System.out.println("Error saving frame: " + ioe);
        }
        dispose();
    }
    public void windowClosed(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    public void actionPerformed(ActionEvent e) {
        if(     e.getSource()==button1) cardLayout.show(cards, "Panel-1");
        else if(e.getSource()==button2) cardLayout.show(cards, "Panel-2");
        else if(e.getSource()==button3) cardLayout.show(cards, "Panel-3");
    }
    private static String serializeFilename ="Card_Layout_Demo.ser";
    private CardLayout cardLayout;
    private JToolBar toolbar;
    private JPanel cards;
    private JButton button1, button2, button3;
    private JLabel label1,label2, label3;
    private JPanel panel1, panel2, panel3;
    private JTextField textF1, textF2, textF3;
}
```


----------



## André Uhres (25. Okt 2005)

Im "Card_Layout_Demo" habe ich noch eine kleine Korrektur vorgenommen.


----------

