Java Streams

InV4d3r

Neues Mitglied
Hi, kurze Frage.

Hab nen JButton und ein JTextField, bei Klick auf den Button schreibt er das aktuelle Datum in das TF. Funzt auch.

Nun hab ich einen 2. JButton "Speichern", der das ganze als Textdatei speichern soll, hier der Quellcode für meinen ActionListener vom Save-Button:

Java:
bSave.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            FileWriter fw 	= null;
    	    FileReader fr 	= null;
    	    
    	    try 
    	    {
    	    	fw = new FileWriter("C:/users/benjamin/hallo.txt");
    	    	fw.write("Gespeichert: " +tDate);
    	    	fw.close();
    	    } 
    	    catch (IOException ex) 
    	    {
    	        ex.printStackTrace();
    	     }
        	
        }
        
    });

"tDate" ist das JTextField. Er legt mir das TF an und speichert folgendes hinein:

Code:
Gespeichert: javax.swing.JTextField[,204,70,334x20,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@3e86d0,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],disabledTextColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=sun.swing.PrintColorUIResource[r=51,g=51,b=51],selectionColor=javax.swing.plaf.ColorUIResource[r=184,g=207,b=229],columns=30,columnWidth=11,command=,horizontalAlignment=LEADING]

Also er nimmt nicht den Inhalt vom Textfeld, sondern das Textfeld mit seinen Attributen. Wo liegt mein Fehler?

VG
 
Das solltest Du eigentlich mit einem Blick in die API oder mit Hilfe von Google schon erkennen können.

Wenn Du "tDate" direkt ansprichst, dann bekommst du, sofern du die Methode "toString()" von Object nicht überschrieben hast, den Standartstring zurück - und eben diesen siehst du grade.

javax.swing.JTextField ist der Name der Klasse deines JTextField Objektes. In den eckigen Klammern dahinter stehen dessen Attribute.

Übrigens ist es sehr unüblich, so in Dateien zu schreiben, wie du es machst.
Dein Stichwort: BufferedWriter - das ist das Minimum.

Wenn Du jetzt immer noch nicht weiterkommst, geb ich dir gern noch ein paar Tipps 😉
 
Zuletzt bearbeitet:
@age

wie wäre es selbst mal in die API zu gucken ?

Writer/Reader *egal ob buffered oder nicht* können nur in verbindung mit text/plain - daten *also ganz normalen DARSTELLBAREN Strings* verwendet werden ... bei binär-daten führen diese jedoch zu encoding-fehlern wesshalb hier low-level streams gebraucht werden !

*wobei du in dem fall recht hast und man hier mindestens PrintStream oder eben BufferedWriter verwenden sollte ... danach dann allerdings das flush() nicht vergessen !*
 

Zurück
Oben