【问题标题】:Trying to write to file from text area and write to text area from file尝试从文本区域写入文件并从文件写入文本区域
【发布时间】:2020-04-10 21:06:02
【问题描述】:

我可以成功地从文本区域写入文件,但在从文件写入文本区域时遇到问题。问题似乎在于 Window.setJTextArea()。我尝试过使用不同类型的 I/O 选项,但陷入了僵局。我在这里超出了我的深度,请提供指导。 Window 类中有更多正文,但没有通过本网站的审核阶段,因此我将其删除。

class Window {
        file = new File("/Users/samuelballard/eclipse-workspace/cse_1322/ZModule_6/src/lab12/WriteFile.java");
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public File getFile() {
        return file;
    }
    public void setEmpty() {
        textArea = new JTextArea("Empty");
    }
    public void setJTextArea() {
        textArea = new JTextArea("");
        try {
            reader = new FileReader("/Users/samuelballard/eclipse-workspace/cse_1322/ZModule_6/src/lab12/WriteFile.java");
            textArea.read(reader, "File");
            reader.close();
        } catch(IOException i) {
            i.printStackTrace();
        }
    }
    public void saveJTextArea() {
        try {
            writer = new FileWriter("/Users/samuelballard/eclipse-workspace/cse_1322/ZModule_6/src/lab12/WriteFile.java");
            textArea.write(writer);
            writer.close();
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

final class EventHandler extends Window {
    EventHandler() {
        put();
        get();
    }
    public void put() {
        put.addActionListener(new ActionListener() {
            // save text area to file
            public void actionPerformed(ActionEvent e) {
                saveJTextArea();
            }

        });
    }
    public void get() {
        get.addActionListener(new ActionListener() {
            // Display Contents of file
            public void actionPerformed(ActionEvent e) {
                setJTextArea();
            }

        });
    }
}

【问题讨论】:

    标签: java swing file-io


    【解决方案1】:

    但在从文件写入文本区域时遇到问题。问题似乎出在 Window.setJTextArea() 中。

    你的方法是正确的。您应该使用JTextArearead(…) 方法。

    但是,问题在于您创建了一个新的 JTextArea 并且您从未将文本区域添加到框架中。所以文本只是坐在内存中,而不是显示在框架上。

    textArea = new JTextArea("");
    

    只删除上面的语句:

    //textArea = new JTextArea("");
    

    read(…) 方法会在加载文件之前清除文本区域中的文本。

    请参阅:Loading a text file into a textarea 以获得一个简单的工作示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2011-05-19
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多