Swing FileWriter schreibt keine Daten in Datei

Alex2013

Bekanntes Mitglied
Hallo Leute,

ich habe bei meinem Programm versucht, die grafischen Elemente so auszubauen, dass das Programm die Daten von Personen in eine Datei schreiben soll (bzw. zwei Dateien).
Jedoch wird, wenn das Programm ausgeführt wird, höchstens eine leere Datei, also ohne Inhalt erzeugt.

Nach einiger Recherche und herum Probieren, gibt mir eine Methode nur noch eine Fehlermeldung.
Habt ihr ggfs. einen Tipp, wie ich die Daten, die ich über ein Gui eingebe und die im Programm selbst angezeigt werden, auch in einer lokalen Datei abspeichern kann, so dass diese länger (bis über das Beenden des Programmes hinaus) zur Verfügung stehen?

Mein bisheriger Code:
Java:
try{
            int i=0;
            int[] datenPerson1=new int[9];
            FileWriter stream=new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\person1.txt");
            for(i=0;i<datenPerson1.length;i++)
            {
                datenPerson1[0]=Integer.parseInt(name1.getText());
                datenPerson1[1]=Integer.parseInt(land1.getText());
                datenPerson1[2]=Integer.parseInt(beruf1.getText());
                datenPerson1[3]=Integer.parseInt(wohnort1.getText());
                datenPerson1[4]=Integer.parseInt(geburtsdatum1.getText());
                datenPerson1[5]=Integer.parseInt(haarfarbe1.getText());
                datenPerson1[6]=Integer.parseInt(augenfarbe1.getText());
                datenPerson1[7]=Integer.parseInt(groesse1.getText());
                if(maennlich.isSelected())
                datenPerson1[8]=Integer.parseInt(maennlich.getText());
                else
                    datenPerson1[8]=Integer.parseInt(weiblich.getText());
            }

            BufferedWriter out=new BufferedWriter(stream);
            out.write(datenPerson1); //Hier wird jetzt zusätzlich angezeigt, dass datenPerson1 zu //einer int Variable geändert werden soll
            out.close();
        }catch(Exception e){}
    }
Die Daten an sich, sollen auch noch in einerm String array gespeichert werden und bei betätigen des löschen Buttons entfernt werden. Das muss ich auch noch anpassen.
Habt ihr zu der obigen Fragestellung ggfs. einen Tipp oder einen anderen Ansatz?

Vielen Dank schon mal.
Lg
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Du kannst bei einem BufferedWriter kein int-Array schreiben. Ich glaube auch nicht, dass du bei Name oder Land in ein int verwandeln kannst.

Sieh dir mal CSV oder XML Fileformat an, da gibts in Java dann auch zig Lösungen, wie man die ein- und auslesen kann.
 

Joose

Top Contributor
Java:
try{
.............
        }catch(Exception e){}
    }
Die Daten an sich, sollen auch noch in einerm String array gespeichert werden und bei betätigen des löschen Buttons entfernt werden. Das muss ich auch noch anpassen.

WICHTIG: Lasse deinen "catch"-Block nicht einfach leer. Sollte eine Exception fliegen wird diese aufgefangen und damit nichts gemacht und du wirst auch NIE mitbekommen wenn eine fliegt.
Daher am besten einfach die Exception ausgeben lassen mittels "e.printStackTrace()" (natürlich gibt es auch Alternative -> Logging, ...).

Du willst deine Daten in ein String Array speichern, wandelst aber alles in ein Integer? Bist du dir sicher das du genau weißt was dein Code machen soll? ;)
 

Alex2013

Bekanntes Mitglied
Ich habe es jetzt etwas umgestellt...
Ich hatte ursprünglich eine Datei, in die auch geschrieben werden konnte. Allerdings unschön ohne Abstände etc. Hier wurde auch immer der bestehende Inhalt durch den zweiten überschrieben. Dieses Verhalten konnte ich auch durch eine boolean Variable nicht ändern. Jetzt habe ich es so, dass in zwei Dateien geschrieben werden soll. Diese werden auch beide erstellt. Es wird aber trotzdem nur in eine Datei geschrieben. Und auch nur der erste Teil. Die Daten der zweiten Person werden nicht in die Datei geschrieben. Fehler werden nicht ausgeworfen.
Hat hier vielleicht noch jemand einen Tipp?

Hier der jetzige Code, wie er zum Teil funktioniert:
Java:
public void setPerson(boolean stat, String name,String land,String beruf,String wohnort,String haarfarbe,String augenfarbe,String groesse,String geburtsdatum)
    {
        DatenPerson dp=new DatenPerson(name, land, beruf, wohnort, haarfarbe, augenfarbe, geburtsdatum, groesse, geburtsdatum);
    
        if(stat==true)
        {
            pers1[0]=this.name1.getText();
            pers1[1]=this.land1.getText();
            pers1[2]=this.beruf1.getText();
            pers1[3]=this.wohnort1.getText();
            pers1[4]=this.haarfarbe1.getText();
            pers1[5]=this.augenfarbe1.getText();
            pers1[6]=this.groesse1.getText();
            pers1[7]=this.geburtsdatum1.getText();
        
            String[] datenPerson1=new String[9];
            FileWriter stream;
            try {
                stream = new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\person1.txt");
        
            datenPerson1[0]=name1.getText();
            datenPerson1[1]=land1.getText();
            datenPerson1[2]=beruf1.getText();
            datenPerson1[3]=wohnort1.getText();
            datenPerson1[4]=geburtsdatum1.getText();
            datenPerson1[5]=haarfarbe1.getText();
            datenPerson1[6]=augenfarbe1.getText();
            datenPerson1[7]=groesse1.getText();
            if(maennlich.isSelected())
            datenPerson1[8]=maennlich.getText();
            else
                datenPerson1[8]=weiblich.getText();
    
        BufferedWriter out=new BufferedWriter(stream);
        out.write(datenPerson1[0].toString());
        out.write(datenPerson1[1].toString());
        out.write(datenPerson1[2].toString());
        out.write(datenPerson1[3].toString());
        out.close();} catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            pers2[0]=this.name1.getText();
            pers2[1]=this.land1.getText();
           pers2[2]=this.beruf1.getText();
           pers2[3]=this.wohnort1.getText();
           pers2[4]=this.haarfarbe1.getText();
           pers2[5]=this.augenfarbe1.getText();
           pers2[6]=this.groesse1.getText();
           pers2[7]=this.geburtsdatum1.getText();
        
           try{
            
                String[] datenPerson2=new String[9];
//                boolean stat=true;
            
                
                System.out.println("X1");
            
                FileWriter stream2=new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\person2.txt");

                System.out.println("X2");
                datenPerson2[0]=name1.getText();
                datenPerson2[1]=land1.getText();
                datenPerson2[2]=beruf1.getText();
                datenPerson2[3]=wohnort1.getText();
                datenPerson2[4]=geburtsdatum1.getText();
                datenPerson2[5]=haarfarbe1.getText();
                datenPerson2[6]=augenfarbe1.getText();
                datenPerson2[7]=groesse1.getText();
                if(maennlich.isSelected())
                datenPerson2[8]=maennlich.getText();
                else
                    datenPerson2[8]=weiblich.getText();

                System.out.println("X3");
                BufferedWriter out2=new BufferedWriter(stream2);

                System.out.println("X4");
                out2.write(datenPerson2[4].toString());
                out2.write(datenPerson2[5].toString());
                out2.write(datenPerson2[6].toString());
                out2.write(datenPerson2[7].toString());

                System.out.println("X5");
                out2.close();

                System.out.println("X6");
                }catch(Exception e){
                System.out.println(e);
            }
        }
    }

Um Unklarheiten vorzubeugen. Die Arraya pers1 und pers2 werden natürlich im Programm selbst auch erzeugt.

Für weitere Tipps, die Daten von beiden Personen in eine Datei zu schreiben, wäre ich dankbar. :)[/code]
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Java:
        DatenPerson dp=new DatenPerson(name, land, beruf, wohnort, haarfarbe, augenfarbe, geburtsdatum, groesse, geburtsdatum);
    ........
                BufferedWriter out2=new BufferedWriter(stream2);

                System.out.println("X4");
                out2.write(datenPerson2[4].toString());
                out2.write(datenPerson2[5].toString());
                out2.write(datenPerson2[6].toString());
                out2.write(datenPerson2[7].toString());

Die Klasse "BufferedWriter" hat laut Dokumentation keine Methode, welche einfach einen String entgegen nimmt. Daher wundert mich das der Code so kompiliert und funktioniert (für eine Person).
Ist diese Klasse vom JavaFramework oder aus einer Bibliothek?

Anmerkungen:
Warum heißt denn die Klasse nicht einfach Person statt DatenPerson? (Klar sie speichert Daten einer Person, aber eine Klasse soll der Bauplan sein für ein reales Objekt -> Person). Aber das tut nichts zum Problem.
Dein if und else Block machen bis auf 2 Sachen 1:1 die gleichen Dinge. Der Unterschied besteht einfach im Dateipfad wo gespeichert werden soll und das Array welches verwendet wird.
Java:
public void setPerson(boolean stat, String name,String land,String beruf,String wohnort,String haarfarbe,String augenfarbe,String groesse,String geburtsdatum) {
   DatenPerson dp = new DatenPerson(name, land, beruf, wohnort, haarfarbe, augenfarbe, geburtsdatum, groesse, geburtsdatum);

   String filename = "";
   String[] person = null;
   if(stat) {
     filename = "person1.txt";
     person = pers1;
   } else {
     filename = "person2.txt";
     person = pers2;
   }
   
   person[0] = this.name1.getText();
   person[1] = this.land1.getText();
   person[2] = this.beruf1.getText();
   person[3] = this.wohnort1.getText();
   person[4] = this.haarfarbe1.getText();
   person[5] = this.augenfarbe1.getText();
   person[6] = this.groesse1.getText();
   person[7] = this.geburtsdatum1.getText();

   String[] datenPerson = new String[9];
   FileWriter stream;
   try {
     stream = new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\" + filename);
     datenPerson[0] = name1.getText();
     datenPerson[1] = land1.getText();
     datenPerson[2] = beruf1.getText();
     datenPerson[3] = wohnort1.getText();
     datenPerson[4] = geburtsdatum1.getText();
     datenPerson[5] = haarfarbe1.getText();
     datenPerson[6] = augenfarbe1.getText();
     datenPerson[7] = groesse1.getText();
     if(maennlich.isSelected()) {
       datenPerson[8] = maennlich.getText();
     } else {
       datenPerson1[8] = weiblich.getText();
     }
     BufferedWriter out = new BufferedWriter(stream);
     out.write(datenPerson1[0].toString());
     out.write(datenPerson1[1].toString());
     out.write(datenPerson1[2].toString());
     out.write(datenPerson1[3].toString());
     out.close();
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
}
 

Alex2013

Bekanntes Mitglied
Die Klasse wird von Eclipse zur Verfügung gestellt. Also vermute ich, dass sie auch im Framwork ist. Das kann ich aber nicht genau sagen.
Nun ich hatte die Personen erst in einem Array. Zum Test habe ich dann zwei erstellt. Mit beiden Varianten funktioniert es nicht.
Da ich aber zwei Arrays habe und zwei Dateien, weiß ich jetzt nicht direkt wo der Fehler liegt.
Zu der Frage nach Person: Ich habe schon eine Klasse welche so ähnlich heißt, aber das beinhaltet, was in einer Klasse Person enthalten wäre. Diese stellt bei mir nach dem Hauptfenster das zweite GUI dar.
Also mit einem Array und mit zweien funktioniert es bei mir aktuell noch nicht... :-(
ich schau mal, ob ich noch etwas anderes ändern kann, bin aber weiter für Vorschläge offen :)

btw: auch mit deinem erweiterten Code funktioniert es nicht.
 

Joose

Top Contributor
Ich habe auch nicht behauptet das es mit meinem Code nun funktioniert ;)
Mein Code sollte dir nur eine Möglichkeit zeigen deinen doppelten Code zu vereinfachen -> Vorteil weniger Code der leichter zu lesen und ändern ist.

Was genau ist dein Ziel? Die Daten, welche von an die Methode "setPerson" übergeben werden in eine Datei zu schreiben?
Mache zuerst ein neues Projekt und testen das FileWriter Example (http://examples.javacodegeeks.com/core-java/io/filewriter/java-filewriter-example/ ) zuerst in diesem. Wenn es klappt dann kannst du versuchen es auf dein Projekt/Problem zu übertragen!

Warum verwendest du eine Klasse wenn du nicht mal weißt woher sie kommt? Wie bist du denn auf diese Klasse gekommen?
Diesbezüglich solltest du dir die Grundlagen der OOP anschauen. Die Klasse oder deren Package sollte oben bei den Imports zu finden sein. (sollte das importierte Package mit "java." anfangen handelt es sich - höchstwahrscheinlich - um eine Klasse aus dem JavaFramework).
 

Harry Kane

Top Contributor
In deinem try-Block befüllst du datenPerson mit Daten, schreibst mit dem BufferedWriter aber die Daten aus datenPerson1. Auch bei anderen Stellen in der Methode habe ich den Verdacht, dass du datenPerson und datenPerson1 mischst. Die meisten der Parameter (alle bis auf stat) die du an die setPerson-Methode übergibst, dienen einzig dazu, die Instanz der Klasse DatenPerson, die du ganz am Anfang der setPerson() Methode erzeugst, mit Daten zu füllen. Diese Instanz wird aber zumindest in dem geposteten Code nie verwendet.
Wenn das Teil einer Hausaufgabe ist: gibt es Vorgaben, welche Klassen du verwenden musst, bzw. gibt es welche die du nicht verwenden sollst/darfst?
@Joose: Die write(String) Methode steckt in der Writer-Klasse.
 

Alex2013

Bekanntes Mitglied
Hier die beiden in Frage kommenden Klassen:

Java:
public class Partner extends JPanel implements ActionListener
{
    private static final long serialVersionUID = 1L;
    JButton ok,abbrechen;
    JLabel name,land,beruf,wohnort,geburtsdatum,haarfarbe,augenfarbe,groesse;
    JTextField name1,land1,beruf1,wohnort1,geburtsdatum1,haarfarbe1,augenfarbe1,groesse1;
    JRadioButton maennlich,weiblich;
    JFrame c;
    Partner p1,p2;
    boolean status;
    String [] pers1=new String[8];
    String [] pers2=new String[8];
  
    JPanel anhang,anhang2,btnGrp,buttonPanel;
    ButtonGroup bg=new ButtonGroup();
    PartnerFindenGui pfg;
    String radioSelect,ausgabe1,ausgabe2;
    DatenPerson dp,dp1,dp2;
      
    public Partner(JFrame c, JPanel anhang, boolean status)
    {
        this.status=status;
        this.c=c;
        this.anhang = anhang;
        setLayout(new GridLayout(10,2));
        add(name=new JLabel("Name: ", JLabel.RIGHT));
        add(name1=new JTextField());
        add(land=new JLabel("Land: ",JLabel.RIGHT));
        add(land1=new JTextField());
        add(beruf=new JLabel("Beruf: ",JLabel.RIGHT));
        add(beruf1=new JTextField());
        add(wohnort=new JLabel("Wohnort: ",JLabel.RIGHT));
        add(wohnort1=new JTextField());
        add(geburtsdatum=new JLabel("Geburtsdatum: ",JLabel.RIGHT));
        add(geburtsdatum1=new JTextField());
        add(haarfarbe=new JLabel("Haarfarbe: ",JLabel.RIGHT));
        add(haarfarbe1=new JTextField());
        add(augenfarbe=new JLabel("Augenfarbe: ",JLabel.RIGHT));
        add(augenfarbe1=new JTextField());
        add(groesse=new JLabel("Groesse: ",JLabel.RIGHT));
        add(groesse1=new JTextField());
        add(btnGrp=new JPanel());
        btnGrp.add(maennlich=new JRadioButton("maennlich"));
        btnGrp.add(weiblich=new JRadioButton("weiblich"));
        add(buttonPanel=new JPanel());
        buttonPanel.add(ok=new JButton("OK"));
        ok.setActionCommand("OK");
        ok.setBackground(Color.GREEN);
        ok.addActionListener(this);
        buttonPanel.add(abbrechen=new JButton("Abbrechen"));
        abbrechen.setActionCommand("Abbrechen");
        abbrechen.addActionListener(this);
        abbrechen.setBackground(Color.RED);
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent ae)
    {
            if(ae.getActionCommand().equals("OK"))
            {
            ausgabe1="Person: "+"\n"+"Name: "+this.name1.getText()+"\n"+"Land: "+this.land1.getText()+"\n"+
                    "Beruf: "+this.beruf1.getText()+"\n"+"Wohnort: "+this.wohnort1.getText()+"\n"+"Geburtsdatum: "+this.geburtsdatum1.getText()+
                    "\n"+"Haarfarbe: "+this.haarfarbe1.getText()+"\n"+"Augenfarbe: "+this.augenfarbe1.getText()+"\n"+"Groesse: "+
                    this.groesse1.getText()+"\n"+"Geschlecht: "+radioSelect
                            +"\n"+ "wurde gesetzt";
          
                setPerson(this.status, this.name1.getText(),this.land1.getText(),this.beruf1.getText(),this.wohnort1.getText(),
                    this.haarfarbe1.getText(),this.augenfarbe1.getText(),this.groesse1.getText(),this.geburtsdatum1.getText());
          
            if(maennlich.isSelected())
            {
                radioSelect=maennlich.getText();
            }
          
            if(weiblich.isSelected())
            {
                radioSelect=weiblich.getText();
            }

            JOptionPane.showMessageDialog(null, "Person: "+"\n"+"Name: "+this.name1.getText()+"\n"+"Land: "+this.land1.getText()+"\n"+
            "Beruf: "+this.beruf1.getText()+"\n"+"Wohnort: "+this.wohnort1.getText()+"\n"+"Geburtsdatum: "+this.geburtsdatum1.getText()+
            "\n"+"Haarfarbe: "+this.haarfarbe1.getText()+"\n"+"Augenfarbe: "+this.augenfarbe1.getText()+"\n"+"Groesse: "+
            this.groesse1.getText()+"\n"+"Geschlecht: "+radioSelect
                    +"\n"+ "wurde gesetzt","Meldung",JOptionPane.INFORMATION_MESSAGE);

            this.setVisible(false);
            this.anhang.setVisible(true);
        }
        if(ae.getActionCommand().equals("Abbrechen"))
        {
            c.getContentPane().remove(this);
            this.anhang.setVisible(true);
            c.repaint();
            c.dispose();
        }
      
      
    }
  
    public void setPerson(boolean stat, String name,String land,String beruf,String wohnort,String haarfarbe,String augenfarbe,String groesse,String geburtsdatum)
    {
        DatenPerson dp=new DatenPerson(name, land, beruf, wohnort, haarfarbe, augenfarbe, geburtsdatum, groesse, geburtsdatum);
      
        if(stat==true)
        {
            pers1[0]=this.name1.getText();
            pers1[1]=this.land1.getText();
            pers1[2]=this.beruf1.getText();
            pers1[3]=this.wohnort1.getText();
            pers1[4]=this.haarfarbe1.getText();
            pers1[5]=this.augenfarbe1.getText();
            pers1[6]=this.groesse1.getText();
            pers1[7]=this.geburtsdatum1.getText();
          
            String[] datenPerson1=new String[9];
            FileWriter stream;
            try {
                stream = new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\person1.txt");
          
            datenPerson1[0]=name1.getText();
            datenPerson1[1]=land1.getText();
            datenPerson1[2]=beruf1.getText();
            datenPerson1[3]=wohnort1.getText();
            datenPerson1[4]=geburtsdatum1.getText();
            datenPerson1[5]=haarfarbe1.getText();
            datenPerson1[6]=augenfarbe1.getText();
            datenPerson1[7]=groesse1.getText();
            if(maennlich.isSelected())
            datenPerson1[8]=maennlich.getText();
            else
                datenPerson1[8]=weiblich.getText();
      
        BufferedWriter out=new BufferedWriter(stream);
        out.write(datenPerson1[0].toString());
        out.write(datenPerson1[1].toString());
        out.write(datenPerson1[2].toString());
        out.write(datenPerson1[3].toString());
        out.close();} catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else
        {
            pers2[0]=this.name1.getText();
            pers2[1]=this.land1.getText();
           pers2[2]=this.beruf1.getText();
           pers2[3]=this.wohnort1.getText();
           pers2[4]=this.haarfarbe1.getText();
           pers2[5]=this.augenfarbe1.getText();
           pers2[6]=this.groesse1.getText();
           pers2[7]=this.geburtsdatum1.getText();
          
           try{
              
                String[] datenPerson2=new String[9];
//                boolean stat=true;
              
                  
                System.out.println("X1");
              
                FileWriter stream2=new FileWriter("C:\\Users\\Alexander Admin\\Desktop\\person2.txt");

                System.out.println("X2");
                datenPerson2[0]=name1.getText();
                datenPerson2[1]=land1.getText();
                datenPerson2[2]=beruf1.getText();
                datenPerson2[3]=wohnort1.getText();
                datenPerson2[4]=geburtsdatum1.getText();
                datenPerson2[5]=haarfarbe1.getText();
                datenPerson2[6]=augenfarbe1.getText();
                datenPerson2[7]=groesse1.getText();
                if(maennlich.isSelected())
                datenPerson2[8]=maennlich.getText();
                else
                    datenPerson2[8]=weiblich.getText();

                System.out.println("X3");
                BufferedWriter out2=new BufferedWriter(stream2);

                System.out.println("X4");
                out2.write(datenPerson2[4].toString());
                out2.write(datenPerson2[5].toString());
                out2.write(datenPerson2[6].toString());
                out2.write(datenPerson2[7].toString());

                System.out.println("X5");
                out2.close();

                System.out.println("X6");
                }catch(Exception e){
                    e.printStackTrace();
                System.out.println(e);
            }
        }
    }
  
    public String[] getPerson(int i)
    {
        if(i==1)
        {
            return pers1;
        }
        else
        {
            return pers2;
        }
    }
}

und

Java:
public class PartnerFindenGui extends JFrame implements ActionListener
{
    private static final long serialVersionUID = 1L;
    JButton partner1,partner2,partner1U2Anzeigen,loeschen,zurueck,abbrechen,ok;

    JPanel anhang,bildPanel;
    Container c;
    String [] pers1=new String[8];
    String [] pers2=new String[8];
    Partner p,p1;
    Partner p2;
    DatenPerson dp;
    Bild b=new Bild();
  
    //In diesem Konstruktor wird nur das Anfangsmenü geladen
    public PartnerFindenGui()
    {
        c=getContentPane();
        setSize(500, 500);
        setLocation(100, 100);
        c.add(anhang=new JPanel());
        anhang.setLayout(new GridLayout(3, 2));
        anhang.add(partner1=new JButton("Partner 1"));
        partner1.addActionListener(this);
        partner1.setActionCommand("Partner 1");
      
        anhang.add(partner2=new JButton("Partner 2"));
        partner2.addActionListener(this);
        partner2.setActionCommand("Partner 2");
      
        anhang.add(partner1U2Anzeigen=new JButton("Partner 1 und 2 anzeigen"));
        partner1U2Anzeigen.addActionListener(this);
        partner1U2Anzeigen.setActionCommand("Partner 1 und 2 anzeigen");
      
        anhang.add(loeschen=new JButton("Daten löschen"));
        loeschen.setToolTipText("Drücken Sie diese Taste um sämtliche Daten zu löschen");
        loeschen.addActionListener(this);
        loeschen.setActionCommand("Daten löschen");
      
        anhang.add(zurueck=new JButton("zurück"));
        zurueck.addActionListener(this);
        zurueck.setActionCommand("zurück");
      
        anhang.add(abbrechen=new JButton("Abbrechen"));
        abbrechen.setToolTipText("Das Progamm schließen");
        abbrechen.addActionListener(this);
        abbrechen.setActionCommand("Abbrechen");
      
        pack();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setVisible(true);
      
        //Erst hier unten werden die Partnerobjekte im Konstruktor erstellt, damit sie hinterher, wenn das Menü
        //vorhanden ist auch zur Verfügung stehen
        //Den Partnerobjekten wird im Konstruktor jeweils der JFrame, das JPanel und der Status übergeben
        p1 = new Partner(this,anhang,true);
        p2 = new Partner(this,anhang,false);
    }
  
  
  
    public static void main(String[] args)
    {
        new PartnerFindenGui();
    }
  
    @Override
    public void actionPerformed(ActionEvent ae)
    {
        if(ae.getActionCommand().equals("Partner 1"))
        {
            //Hier wird der Titel des ersten Konstruktors durch den folgenden ersetzt
            //dann wird der erste Partner an den Container gehängt, das letzte JPanel unsichtbar gemacht und das aktuelle sichtbar
            super.setTitle("Partner 1");
            c.add(p1);
            anhang.setVisible(false);
            p1.setLocation(0,0);
            p1.setLayout(new GridLayout(11, 2));
            pack();
            p1.setVisible(true);
        }
      
        else if(ae.getActionCommand().equals("Partner 2"))
        {
            //Hier wird der Titel des ersten Konstruktors durch den folgenden ersetzt
            //dann wird der erste Partner an den Container gehängt, das letzte JPanel unsichtbar gemacht und das aktuelle sichtbar
            super.setTitle("Partner 2");
            c.add(p2);
            anhang.setVisible(false);
            p2.setLocation(0, 0);
            p2.setLayout(new GridLayout(11, 2));
            pack();
            p2.setVisible(true);
        }
        else if(ae.getActionCommand().equals("Partner 1 und 2 anzeigen"))
        {
            //Hier werden die String arrays, welche mit den Daten der Personen befüllt wurden aufgerufen
            //und jedes array einer Person zugeordnet
            pers1=p1.getPerson(1);
            pers2=p2.getPerson(2);
            //Anschließend erfolgt die Ausgabe
            JOptionPane.showMessageDialog(null,"Partner 1: "+"\n"+"Name: "+pers1[0]+"\n"
            +"Land: "+pers1[1]+"\n"+"Beruf: "+pers1[2]+"\n"+"Wohnort: "+pers1[3]+"\n"+"Haarfarbe: "+pers1[4]+"\n"
            +"Augenfarbe: "+pers1[5]+"\n"+"Groesse: "+pers1[6]+"\n"+"Geburtsdatum :"+pers1[7]+"\n"+"Geschlecht: "+p1.radioSelect+"\n"+"\n"+"\n"+
            "Partner 2: "+"\n"+"Name: "+pers2[0]+"\n"+"Land: "+pers2[1]+"\n"+"Beruf: "+pers2[2]+"\n"+"Wohnort: "+pers2[3]+"\n"
            +"Haarfarbe: "+pers2[4]+"\n"+"Augenfarbe: "+pers2[5]+"\n"+"Groesse: "+pers2[6]+"\n"+"Geburtsdatum: "+pers2[7]+"\n"
            +"Geschlecht: "+p2.radioSelect+"\n"+"\n"+"\n","Meldung",JOptionPane.INFORMATION_MESSAGE);

            if((pers1.equals(pers2))||(!pers1.equals(pers2)))
            {
                JOptionPane.showMessageDialog(null, "Person 1 "+p1.name1.getText()+" passt mit Person 2 "+p2.name1.getText());
            }
        }
        else if(ae.getActionCommand().equals("Daten löschen"))
        {
            //Hier werden über den Zugriff auf die beiden Personen, die einzelnen Daten gelöscht
            p1.name1.setText("");
            p1.land1.setText("");
            p1.beruf1.setText("");
            p1.wohnort1.setText("");
            p1.geburtsdatum1.setText("");
            p1.haarfarbe1.setText("");
            p1.augenfarbe1.setText("");
            p1.groesse1.setText("");
          
            p2.name1.setText("");
            p2.land1.setText("");
            p2.beruf1.setText("");
            p2.wohnort1.setText("");
            p2.geburtsdatum1.setText("");
            p2.haarfarbe1.setText("");
            p2.augenfarbe1.setText("");
            p2.groesse1.setText("");
          
            JOptionPane.showMessageDialog(null, "Daten erfolgreich gelöscht","Meldung",JOptionPane.INFORMATION_MESSAGE);
        }
        else if(ae.getActionCommand().equals("Abbrechen"))
        {
            dispose();
        }  
    }

Ich hoffe hiermit könnt ihr etwas rausfinden. Ich hatte eine Vermutung. Diese habe ich auch gerade ausprobiert. Die Behebung der Vermutung brachte aber auch keine Verbesserung.
Vermutung: datenPerson1[0]=pers1[0] etc. und für person2.
 
Zuletzt bearbeitet von einem Moderator:

Harry Kane

Top Contributor
An dem Programm schreibst du seit mindestens 1.5 Jahren (s. http://www.java-forum.org/thema/zwei-klassen-mit-textfeld-eingaben-vergleichen-und-ausgabe-erzeugen.159728/ ).
So wie es aussieht, hast du den Rat von Joose, die Grundlagen zu lernen, nicht wirklich beherzigt.
Ein paar Anmerkungen meinerseits:
1. Damals hattest du eine Klasse Person, jetzt ist davon keine Rede mehr. Oder übernimmt die Aufgabe der ehemaligen Person-Klasse jetzt DatenPerson? Dann lies das hier nochmal:
Warum heißt denn die Klasse nicht einfach Person statt DatenPerson?
2. Gehe wie damals von Joose geraten, Step by step vor. Ich würds ungefähr so machen: Klasse Person anlegen, dann Instanzen davon erstellen und in der Konsole ausgeben, dann die Eigenschaften von Person-Instanzen in einer Gui ändern, dann Instanzen von Person in einem File abspeichern.
3. Zu deinem aktuellen Code: Die Logik in der Partner-Klasse ist unnötig kompliziert. In der actionPerformed() rufst du in dem Block der mit if(ae.getActionCommand().equals("OK")) beginnt, die setPerson-Methode auf und übergibst dabei die Strings die du aus den JTextFields ausliest. Im Rumpf der setPerson-Methode verwendest du die übergebenen Strings um eine Instanz der Klasse DatenPerson anzulegen. Dann verwendest du diese Instanz aber gar nicht, sondern liest nochmal die Informationen aus den ganzen JTextFields aus und schreibst den Inhalt in die Arrays pers1 oder pers2. Dann liest du die JTextFields nochmal aus, diesmal zusammen mit dem JRadioButton mänlich, packst die Informationen in ein neues Stringarray datenPerson1 oder datenPerson2, was gegenüber pers1 und pers2 nur ein zusätzliches Feld hat (für männlich/weiblich) und die anderen Eigenschaften (Alter, Wohnort, Haarfarbe, etc.) in leicht geänderter Reihenfolge und schreibst dann die Informationen aus datenPerson1/2 teilweise raus, bei datenPerson1 die Strings an den Indices 0-3, bei datenPerson2 die Strings an den Positionen 4-7. Der Sinn des ganzen erschliesst sich mir nicht, Du hast dich da offenbar ausfs Geratewohl in ein Projekt gestürzt, was für deinen Kenntnisstand eine Nummer zu groß ist.
 

Alex2013

Bekanntes Mitglied
@Harry Kane: Ja, da hast du Recht. Ich habe für unterschiedliche Änderungen etc. nicht immer Zeit bzw. um Programme fortzusetzen. Aber ich versuche mich immer wieder. Auch um mich zu verbessern. Aber ja, mein Kenntnisstand ist noch nicht allzu erweitert, auch weil dies bisher ein Hobby geblieben ist, für das nicht immer Zeit da ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
KaffeeFan FileWriter nur leere Zeilen beschreiben Allgemeine Java-Themen 3
R Encoding FileWriter Allgemeine Java-Themen 1
K FileWriter / FileReader Allgemeine Java-Themen 12
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
G Mit FileWriter in Textdatei über jar Allgemeine Java-Themen 4
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
I Filewriter ignoriert Zeilenumbrüche Allgemeine Java-Themen 4
E Umlaute: FileWriter vs. FileOutputStream Allgemeine Java-Themen 3
C FileWriter zu laaaaaaaaaaaam Allgemeine Java-Themen 16
V Unterschied FileOutputStream und FileWriter? Allgemeine Java-Themen 8
H Frage zu FileWriter Allgemeine Java-Themen 12
D FileWriter, PrintWriter und wie sie alle heißen. Allgemeine Java-Themen 13
S Problem!FileWriter Allgemeine Java-Themen 3
H Dateien lesen und schreiben mit Filereader und Filewriter Allgemeine Java-Themen 2
G Problem mit FileWriter Allgemeine Java-Themen 7
H Mit filewriter farbigen text schreiben? Allgemeine Java-Themen 7
S FileWriter PrintWriter Allgemeine Java-Themen 5
G Mit FileWriter Zeilenumbruch schreiben Allgemeine Java-Themen 8
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
H Input/Output Wie schreibt man programmatisch Matrizen auf? Allgemeine Java-Themen 21
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
ralfb1105 LogManager logger schreibt nicht in Catch() Zweig Allgemeine Java-Themen 2
Aruetiise Methoden write() schreibt nicht alles Allgemeine Java-Themen 4
B Installer, der in die Win-Registry schreibt Allgemeine Java-Themen 10
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
M Für was schreibt man Unit-Tests? Allgemeine Java-Themen 55
J BufferedWriter schreibt von selbst ein "" Allgemeine Java-Themen 12
G wie schreibt man das? Allgemeine Java-Themen 16
Q Schnittstelle/Abstrakte Klasse schreibt Annotation vor? Allgemeine Java-Themen 4
W BufferedWriter.write() schreibt nicht Allgemeine Java-Themen 3
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
Tobero Eclipse Runnable jar exportiert keine Textures? Allgemeine Java-Themen 12
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
tfa Keine Closures in Java 7 (?) Allgemeine Java-Themen 17
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben