gespeicherte Daten aus Textfeld wieder einlesen

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
plammy
Beiträge: 3
Registriert: 18.06.2012, 12:38

gespeicherte Daten aus Textfeld wieder einlesen

Beitrag von plammy » 18.06.2012, 12:54

Hallo :) Ich brauche Eure Hilfe :| .. Ich hab ein Programm, womit man verschiedene Rechtecke anhand von Benutzereingaben zeichen kann die quasi letztendlich als Layout dienen sollen. Die Eingaben erfolgen in verschiedenen TextFelder. Ich will das man diese Eingaben speichern kann damit man den erstellten Layout aus Rechtecken wiederherstellen kann. Ich hab schon geschafft dass ich die Eingaben in einem txt.Datei erfolgreich speichern kann. Jetzt will ich diese Eingaben aus der txt.Datei auslesen und die TextFelder mit diesen Eingaben wieder befüllen. Das auslesen der Datei an sich funktioniert ja auf der Konsole. Ich glaube meine Fehler liegt bei dem Neuzeichnen der Panel. Per JFileChooser muss man die gespeciherte Datei auswählen können und das Layout neuzeichen mit ausgefüllten Textfelder.

Code: Alles auswählen

public class GUI extends JFrame implements ActionListener{

    static GUI gui = new GUI();

  
    public GUI() {
        initComponents();   

        setTitle("Layout Tool");
        setSize(900,900);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        
    }

     void initComponents() {

        startPanel = new JPanel();
 
        imageLabel = new JLabel();
        
        menubar = new JMenuBar();
        menuFile = new JMenu();
        menuAds = new JMenu();


       .........
     }
 public void actionPerformed(ActionEvent object) {
   
        //Oeffnen
        if (object.getSource() == open){
            
            CreateFile create = new CreateFile();  

            JFileChooser fc = new JFileChooser();
            setContentPane(create);
            getContentPane().add(fc);
               
             
            fc.setFileFilter(new FileNameExtensionFilter("*.txt","txt"));
            
            int state = fc.showOpenDialog(CreateFile.editPanel);
            if ( state == JFileChooser.APPROVE_OPTION ){
                File openFile = fc.getSelectedFile();  

              BufferedReader br = null;
               try {
           
                String line = null;
                
                br = new BufferedReader(new FileReader(openFile));
                    while ((line = br.readLine()) != null) {
  
                        line = br.readLine();
                        CreateFile.cf.headerHeight.setText(line);

                        line = br.readLine();         
                        CreateFile.cf.contentWidth.setText(line);
                        
                    .....
                    
            
                    } catch (FileNotFoundException ex) {
                        ex.printStackTrace();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    } finally {
                        //Close the BufferedReader
                        try {
                            if (br != null)
                                br.close();
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        }
                    }
               
               repaint();
              }
        }
        //Speichern
        if (object.getSource() == save){
            
                JFileChooser fc = new JFileChooser();  

                String headerW = Integer.toString(CreateFile.cf.headerW)+"\r\n";
                String headerH = Integer.toString(CreateFile.cf.headerH)+"\r\n";
                String contentW = Integer.toString(CreateFile.cf.contentW)+"\r\n";
                String contentH = Integer.toString(CreateFile.cf.contentH)+"\r\n";
                ........
                
                int returnVal = fc.showSaveDialog(CreateFile.editPanel);  
                
                if (returnVal == JFileChooser.APPROVE_OPTION)
                {
                    File saveFile = new File(fc.getSelectedFile()+".txt");  
                  
                    BufferedWriter bw;
                    try 
                        
                    {
                        bw = new BufferedWriter(new FileWriter(saveFile));

                        bw.write(headerW);
                        bw.write(headerH);
                        bw.write(contentW);
                        bw.write(contentH);
                       ......... 

                        bw.close();
                    } catch(IOException e){
                        System.out.println("Fehler beim Schreiben der Datei. Überprüfen Sie vielleicht Ihre Angaben.");
                    }
                }
        }

Code: Alles auswählen

public class CreateFile extends JPanel implements ActionListener
{
 
    static CreateFile cf = new CreateFile();
   
    public CreateFile()
    {
        initComponents();        
    }
    
    public void initComponents() 
    {
        tabbedPane = new JTabbedPane();
        
        editPanel = new EditPanel();
        editPanel.setPreferredSize(new Dimension(1200,1200));
   
        scrollPane=new JScrollPane();
        editPanel.setAutoscrolls(true);
        scrollPane.setPreferredSize(new Dimension(600,600));
     
        websitePanel = new JPanel();    
        layoutPanel = new JPanel();
        fixFormsPanel = new JPanel(); 
        individualFormsPanel = new JPanel();
       ....
        //Textfelder
        websiteTextField = new JTextField();
        headerWidth = new JTextField();
        headerHeight = new JTextField();
        contentWidth = new JTextField();
        ....
 //Buttons
        buttonLogoUpload = new JButton();
        buttonCreateLayout = new JButton();       
        buttonFixForms = new JButton();
        buttonIndividualForms = new JButton();


        .....
GroupLayout layoutPanelLayout = new GroupLayout(layoutPanel);
       layoutPanel.setLayout(layoutPanelLayout);
        layoutPanelLayout.setHorizontalGroup(
            layoutPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
 ..........

        GroupLayout editPanelLayout = new GroupLayout(editPanel);
        editPanel.setLayout(editPanelLayout);
        editPanelLayout.setHorizontalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)   
                .addComponent(GUI.imageLabel)
                .addComponent(image_label) 
            .addGap(2,2,2)
          
        );
        editPanelLayout.setVerticalGroup(
            editPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING)   
            .addComponent(GUI.imageLabel)
                .addComponent(image_label)       
            .addGap(2,2,2)
        );
 scrollPane.setViewportView(editPanel);
        tabbedPane.addTab("neu", scrollPane);
        
        GroupLayout layout = new GroupLayout(this);
        this.setLayout(layout);
        this.setBackground(darkGrayPanel);
............
 @Override
    public void actionPerformed(ActionEvent object) 
    {
 if (object.getSource() == buttonCreateLayout)
        {   
      
            cf.headerW = Integer.parseInt(headerWidth.getText());       //Daten auslesen
            cf.headerH = Integer.parseInt(headerHeight.getText());
            repaint();                                                  //Zeichnen
            cf.contentW = Integer.parseInt(contentWidth.getText());
            cf.contentH = Integer.parseInt(contentHeight.getText());
            repaint();
            cf.footerW = Integer.parseInt(footerWidth.getText());
            cf.footerH = Integer.parseInt(footerHeight.getText());
            repaint();
          
        } 
        if (object.getSource() == buttonFixForms)
        {   
            cf.tile1W = Integer.parseInt(tile1Width.getText());
            cf.tile1H = Integer.parseInt(tile1Height.getText());
            repaint();
            cf.tile2W = Integer.parseInt(tile2Width.getText());
            cf.tile2H = Integer.parseInt(tile2Height.getText());
            repaint();
            cf.tile3W = Integer.parseInt(tile3Width.getText());
            cf.tile3H = Integer.parseInt(tile3Height.getText()); 
            repaint();
        } 
......
}
        

Benutzeravatar
Olek77
Beiträge: 669
Registriert: 21.03.2009, 13:09

Re: gespeicherte Daten aus Textfeld wieder einlesen

Beitrag von Olek77 » 21.06.2012, 14:56

Hi,

Erst mal Hallo hier :wink:

Deine Quellen sind ziemlich "komisch", aber nicht ungewöhnlich für "Neulinge".

Erst mal brauchst du nicht dauernd

Code: Alles auswählen

repaint();
aufzurufen.
Das brauchst du eigentlich nie, wenn du nur die GUI-Komponenten editierst.
Wenn du den Text einer Textkomponente wie JTextField ändern möchtest
musst du

Code: Alles auswählen

jTextField.setText( "dein Text hier" );
verwenden.

Am besten du schaust dir mal ein paar tutorials an.
Ich kann dir nur empfehlen die JavaDoc von dem JDK was du verwendest zu downloaden
un als bookmark abzulegen. Die brauchst du als guter Java-Entwickler nämlich sehr häufig.
Dort findest du auch bei den meisten Swing-Komponenten gleich am Anfang einen link
zu einem sehr guten tutorial. Wenn du die durchliest findest du sicher schnell eine Lösung.

Eine weitere Anmerkung :

Code: Alles auswählen

static CreateFile cf = new CreateFile();
   
    public CreateFile()
    {
        initComponents();       
    }
Das ist hier nicht notwendig.
Hat das Netbeans so angelegt?
Ein einfacher Konstruktor wäre hier sinnvoller.
Aus dem kannst du auch initComponents aufrufen.

Also denn,

Viel Erfolg,

Olek
- Netbeans Certified Associate -

Antworten