write()方法无法识别TextArea

时间:2016-07-18 14:22:04

标签: java menu filewriter bufferedwriter writer

我为工具栏菜单项编写了ActionListener,称为“保存”,点击后我希望程序将TextArea l1的内容保存到名为“filename”的.txt文件中“,这就是我提出的代码(因为程序很长,我只在这里粘贴了错误所在或可能位于的代码片段):

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();
        }
      }
    });

当我运行此程序时,我收到以下错误:

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

我在文档和论坛中随处可见,但我无法理解为什么这个错误不会发生,如何解决它......

我该怎么做才能解决此错误?

修改
TextArea看起来像这样:

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

1 个答案:

答案 0 :(得分:1)

将动作侦听器中的代码更改为:

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();
        }
      }
    });