尝试获取BufferedWriter将文本区域保存到txt文件

我正在尝试构建日历应用程序,并使用我标记为便笺的便笺部分。我有一个添加按钮来添加新的笔记,我想将其添加到路径中的当前文件中。我正在尝试使用BufferWriter来做到这一点。我已经附加了newNote()方法,该方法打开一个新框架并允许新文本。我想我正在尝试将新文本附加到当前文件中,但是我看到的示例显示了这样做的方法。 txt文件的输出不是我期望的。我认为这是由于调用了textArea对象,并且它正在拉取对象的数据,而不是textArea内部的输入。我对Java有点陌生,正在做这个项目供个人使用,而不是上课。任何帮助和见解将不胜感激。这也是我第一次在论坛上发帖,所以请告诉我是否有更好的方法。

newNote()方法。

public static void newNote() {//opens new frame to create a new note
    //variables for the new window
    JFrame noteFrame = new JFrame("New Note");
    JPanel notePanel = new JPanel();
    JButton cancelButton = new JButton("Cancel");
    JButton addButton = new JButton("Add");
    JTextArea textArea = new JTextArea("Add notes here");
    //creates and positions buttons
    addButton.setbounds(150,330,65,40);
    addButton.addactionListener(new actionListener() {//writes contents to a txt file when Add is clicked
        @Override
        public void actionPerformed(actionEvent actionEvent) {
            BufferedWriter writer = null;
            try {
                writer = new BufferedWriter((new FileWriter("/home/skydawg/pCloudDrive/Documents/test/Log.txt",true)));

                writer.write(String.valueOf(textArea));
                writer.newLine();
                writer.flush();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            } finally {
                if (writer != null) try {
                    writer.close();
                } catch (IOException ioe2) {
                    // just ignore it
                }
                noteFrame.dispose();//closes the frame
            }}
    });

输出到txt文件

newjavax.swing.JTextArea[,10,280x295,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@13e59af,flags=296,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=0,g=0,b=0],disabledTextColor=javax.swing.plaf.ColorUIResource[r=218,g=218,b=218],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],selectionColor=javax.swing.plaf.ColorUIResource[r=134,g=108,b=186],colums=0,columWidth=0,rows=0,rowHeight=0,word=true,wrap=true]
weishuai7894 回答:尝试获取BufferedWriter将文本区域保存到txt文件

这里:

writer.write(String.valueOf(textArea));

method的Javadoc:

返回Object参数的字符串表示形式。

那没有达到您的期望。就像调用textArea.toString() ...一样,这又一次:没有给您textArea的字符串 content

相反,您想调用textArea.getText(),并将其写入文件中。

除此之外:您不应将太多东西放在一起。含义:编写一个仅将一些文本写入文件的实用程序类。分别测试。并且只有当那个部分起作用时,您才可以在其中放置GUI。您的方法是:将所有内容放在一起,同时测试全部。这意味着您会从一个问题转到另一个问题。不要那样做将您的问题分成许多小部分,然后认真思考“我如何孤立地解决和测试每个部分”!

最后,正如您所看到的:GUI编程和GUI组件复杂。尝试通过反复试验学习这些东西是一种非常低效的策略!最好还是读一本好书或教程(请参阅for example)(请参阅https://cloud.google.com/endpoints/docs/openapi/service-account-authentication#java。首先从可行示例开始,而不是将5种不同的新知识放在一起)最重要的是:每次使用从未学习过的 new 类时,请花点时间阅读相应的Javadoc,从上到下!您可以预先投入时间,也可以花1个小时不了解发生了什么,然后再花时间。

,

JTextArea扩展了JTextComponent。因此,您有一个称为write(java.io.Writer writer)的方法。

这意味着,您可以在代码中调用textArea.write(writer)

本文链接:https://www.f2er.com/2788817.html

大家都在问