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

时间:2017-03-30 23:00:20

标签: java swing jtextarea

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

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

你能给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

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

.content {
    max-height: 120px;
    position: relative;
    overflow: hidden;
}
.content .overlay { 
    position: absolute; 
    bottom: 0; 
    left: 0;
    width: 100%; 
    text-align: center; 
    margin: 0; padding: 30px 0; 
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
}

在这里,我们假设您实现的侦听器的名称称为JTextArea someMessage = new JTextArea(); someMessage.getDocument().addDocumentListener(new MyDocumentListener()); someMessage.getDocument().putProperty("name", "Text Area"); ,实现可能很简单:

MyDocumentListener

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

如何获取插入的文本

文本输入到textarea中时,

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

如何获取textarea

中的所有文本

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

或者更简单,JTextArea#getText