如何保存 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自动换行和滚动条的区别对比