2016-07-18 9 views
0

Ich habe eine ActionListener für eine Symbolleiste Menüelement namens "Speichern" geschrieben, auf klicken Ich möchte das Programm den Inhalt von TextArea l1 in einer TXT-Datei namens "Dateiname" speichern , so si dies den Code, ich komme mit habe (da das Programm wirklich lang ist, ich die Code-Fragmente nur hier eingefügt haben, wo der Fehler liegt oder möglicherweise befinden):write() -Methode nicht TextArea

import java.awt.*; 
import java.awt.event.*; 

... 

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.io.Writer; 

class Progetto extends Frame { 
... 

    private TextArea l1 = new TextArea(); 
    ... 

    private MenuBar menubar; 
    private Menu file; 
    private MenuItem save; 

    ... 

    salva.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
     try { 
      BufferedWriter fileOut = new BufferedWriter(new FileWriter("filename.txt")); 
      l1.write(fileOut); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
     } 
    }); 

Als ich führe dieses Programm aus Ich erhalte den folgenden Fehler:

Error: cannot find symbol 
symbol: method write(java.io.BufferedWriter) 
location: variable l1 of type java.awt.TextArea 

Ich habe everywh In der Dokumentation und Foren, aber ich kann nicht verstehen, warum dieser Fehler auftritt, weder, wie es zu lösen ...

Was kann ich tun, um diesen Fehler zu beheben?

EDIT
Die TextArea sieht wie folgt aus:

Jack: 9.0 
Mark: 9.0 
Nick: 1.0 
Linn: 6.5 
Jhon: 3.5 
+1

Sind Sie sicher, 'TextArea' eine Methode' write' hat? Wenn dies der Fall ist, [ist es nicht gut dokumentiert] (https://docs.oracle.com/javase/8/docs/api/java/awt/TextArea.html). Der Compiler erkennt 'l1' einfach gut. Es kann jedoch keine Methode 'schreiben' finden. – bradimus

+0

Was versuchst du zu tun? Sie möchten einen 'BufferedWriter' in einen' TextArea' schreiben? Oder möchtest du etwas aus einer Datei lesen und in eine 'TextArea' schreiben? – SomeDude

+0

@svasa Ich habe den 'TextArea'' l1' mit einem geschriebenen Text und ich möchte das als separate .txt Datei speichern, also als Beispiel, wenn ich auf der 'TextArea' folgendes habe: I am Java Ich möchte die .TXT-Datei zu sein: Ich bin Java –

Antwort

1

Ändern Sie den Code innerhalb Aktion Hörer:

salva.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
     try { 
      String text = l1.getText(); 
      if (text != null && !text.isEmpty()) 
      { 
      String[] lines = text.split("\n"); 
      BufferedWriter fileOut = new BufferedWriter(new FileWriter("filename.txt")); 
      for (String line : lines) 
      { 

       fileOut.write(line, 0, line.length()-1); 
       fileOut.newLine(); 
      } 

      fileOut.close(); 
      } 


     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     } 
    }); 
+0

Vielen Dank für die Antwort! Ich habe versucht, etwas Ähnliches zuvor, das Problem mit diesem Code ist, dass es den gesamten Text in einer einzigen Zeile, während die TextArea I1 in verschiedenen Zeilen geschrieben wird, so möchte ich die TXT-Datei in der gleichen sein Format. –

+0

@ TobiaZamò aktualisierte Antwort. Auch Ihre Frage scheint für das von Ihnen angegebene Problem völlig irrelevant zu sein. Bitte aktualisieren Sie Ihre Frage. – SomeDude

+0

'String lines = text.split (" \ n ");' die Konsole gibt einen Fehler für inkompatable Typen von 'String' nach' String [] ' –