如何保存 JTextArea 文本?

Posted

技术标签:

【中文标题】如何保存 JTextArea 文本?【英文标题】:how to save JTextArea text? 【发布时间】:2014-09-04 14:32:37 【问题描述】:

我想知道如何保存 JTextArea 文本,当用户在区域中键入内容时,即使用户退出程序并重新打开它,它也会保留在那里。

对不起,我的英语和语法不好。

【问题讨论】:

使用数据库或保存到文件并从中读取。 你应该阅读Data Persistence 另外,Save JTextArea text to a txt file的可能副本 【参考方案1】:

有多种方法可以做到这一点。

    使用数据库:您可以在数据库中存储许多不同的输入,并将其链接到进行输入的用户或其他任何内容。 写入 .txt 文件:这使您可以非常轻松地从应用程序外部访问数据。 序列化字符串:您可以将文本保存在字符串中并序列化对象。

有很多方法可以做到,很难确定哪个是最好的,因为我们不知道你想要实现什么。

【讨论】:

【参考方案2】:

一般来说,您可能希望使用 Swing 组件在某些“模型”对象中公开字段,并仅在显式用户操作时保存模型(到数据库、文件等),但也将其保存给某些用户- 每个用户操作的私有位置(“自动保存”)。但是,java.util.prefs.Preferences 可能对您的要求很有用。一个简单的例子(未经测试):

public class SwingPrefsDemo extends JFrame 
  // other fields, etc...
  Preferences prefsNode = Preferences.userNodeForPackage(SwingPrefsDemo.class);
  JTextField tf_ta;

  public SwingPrefsDemo() 
    // ...
    tf_ta = new JTextArea();
    tf_ta.setText(prefsNode.get("tf_ta","enter text here"));
    this.add(tf_ta);
    tf_ta.getDocument().addDocumentListener(new DocumentListener() 
      public void changedUpdate(DocumentEvent evt)  change(); 
      public void insertUpdate(DocumentEvent evt)  change(); 
      public void removeUpdate(DocumentEvent evt)  change(); 
      private void change() 
        prefsNode.put("tf_ta",tf_ta.getText());
      );
   

【讨论】:

当我运行您的代码或使用您的代码时:JFrame j = new JFrame(""); j.setSize(); j.setVisible(true);代码不起作用。有什么我做错了吗?

以上是关于如何保存 JTextArea 文本?的主要内容,如果未能解决你的问题,请参考以下文章

JTextArea与TextArea自动换行和滚动条的区别对比

JTextArea 中的文本更改事件?如何?

如何将 JTextArea 中的选定文本转换为字符串?

如何更改 JTextArea 中的文本颜色?

如何创建具有指定宽度和显示所有文本所需的最小高度的 JTextArea?

如何在JTextArea中设置文本格式