gpt4 book ai didi

java - 如何将 JTextArea 的内容存储到类中?

转载 作者:行者123 更新时间:2023-12-02 13:32:51 24 4
gpt4 key购买 nike

我正在开发一个程序,该程序充当假设的电子邮件系统,可以在其中创建用户并向已创建的其他用户发送消息。

消息将存储在“Message”类中,并且文本在 GUI 中的 JTextArea 中键入。我想知道的是如何在 Message 类中以完全相同的布局(缩进等)存储输入到 JTextArea 中的文本。我考虑过文本文件,但每条消息都必须有一个,可能会创建无限数量的文本文件,而且我不喜欢必须创建一个系统来为每个文本文件提供唯一名称的概念。

你能给我一些建议吗?

最佳答案

只需实现 DocumentListener interface ,然后执行以下操作:

JTextArea someMessage = new JTextArea();
someMessage.getDocument().addDocumentListener(new MyDocumentListener());
someMessage.getDocument().putProperty("name", "Text Area");

这里,我们假设您实现的监听器的名称称为 MyDocumentListener,并且实现可以简单如下:

class MyDocumentListener implements DocumentListener {
String newline = "\n";

@Override
public void insertUpdate(DocumentEvent e) {
updateLog(e, "inserted into");
}

@Override
public void removeUpdate(DocumentEvent e) {
updateLog(e, "removed from");
}

@Override
public void changedUpdate(DocumentEvent e) {
//Plain text components do not fire these events
}

public void updateLog(DocumentEvent e, String action) {
Document doc = (Document)e.getDocument();
int changeLength = e.getLength();
displayArea.append(
changeLength + " character" +
((changeLength == 1) ? " " : "s ") +
action + doc.getProperty("name") + "." + newline +
" Text length = " + doc.getLength() + newline);
}
}

示例取自Oracle website 。我建议阅读该文章的其余部分,因为它深入探讨了如何有效地监听内部文档模型的更新。

如何获取插入的文本

insertUpdate是在文本区域中输入文本时通知您的内容。您可以通过调用 DocumentEvent#getOffset 来获取新插入的文本。和 DocumentEvent#getLength 。使用这两种方法,您可以获得文档中发生插入的偏移量(索引)以及更改的长度。然后,要获取插入的实际文本,请调用 DocumentEvent#getDocument#getText并提供您从事件中获得的偏移量和长度。

如何获取textarea中的所有文本

您可以使用类似的方法通过 Document#getStartPosition 获取文档中的整个文本。和 Document#getEndPosition ,然后调用Document#getText .

或者更简单,JTextArea#getText

关于java - 如何将 JTextArea 的内容存储到类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43129735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com