Java 文档类之间的差异

Java 文档类之间的差异,java,swing,Java,Swing,我一直在阅读javadocs,试图了解swing文档API,但我无法从中获得一些有用的东西,因为有太多的类:Document,StyledDocument,AbstractDocument,DefaultStyledDocument,PlainDocument,HTMLDocument,还有人提到了DocumentFilter。这个问题更多的是一般性的,所以有人能概述一下实现之间的差异,以及不同的接口和摘要是什么时候用的吗 就我的具体情况而言,我想要实现的是一种数据结构,它将: 仅保留三行文本

我一直在阅读javadocs,试图了解swing文档API,但我无法从中获得一些有用的东西,因为有太多的类:
Document
StyledDocument
AbstractDocument
DefaultStyledDocument
PlainDocument
HTMLDocument
,还有人提到了
DocumentFilter
。这个问题更多的是一般性的,所以有人能概述一下实现之间的差异,以及不同的接口和摘要是什么时候用的吗

就我的具体情况而言,我想要实现的是一种数据结构,它将:

  • 仅保留三行文本。及
  • 属性不能为每行或每文档。我会在其他结构中有几千个这样的
  • 开销很重要

有什么我可以用的吗?或者扩展一下更好吗?如果是,那是什么?

您列出的所有文档类都具有相同的基本功能,并且每个类都根据需要填充的细分市场进行扩展。实际上,这只是认识到您需要做什么并使用适当的文档类型的问题。例如,如果我正在编辑一个HTML文件,那么我将使用HTMLDocument类

我在下面的问题中简要介绍了您要求的每个文档类

文档接口表示 整个HTML或XML文档。 从概念上讲,它是 文档树,并提供 对文档数据的主要访问权限

这是所有其他文档类型将从中继承的接口。它为所有其他文档类型提供了要遵循的合同

此类实现了锁定 它允许的文档的机制 多个读者或一个作者,以及 作者必须等到所有观察者 已将该文件的 开始之前的更改 文件的另一个变种

该类允许您处理不同类型的文档,并使用非常复杂的规则集。这个类更难实现,因为它太通用了

为所有样式化文档提供契约的另一个接口。实现此接口,因此我们接下来将讨论它

可以标记为的文档 中的字符和段落样式 类似于富文本的方式 格式。此文件的元素结构 文档表示样式交叉 用于时尚跑步。这些风格的跑步是 映射到段落元素中 结构(可能位于某些 其他结构)。这种款式很流行 在段落边界处,因为符合逻辑 将样式指定给段落 边界

DefaultStyledDocument允许您在文档中放置特殊字符,以帮助格式化等。。。当您考虑DefaultStyledDocument时,请考虑Microsoft Word

当包含 DocumentFilter已修改(或 通过插入或移除),它将向前移动 适当的方法调用 文档过滤器

这是一个非常有用的类,它“侦听”文档中发生的事件(即修改),并在每个事件发生时执行操作

实现AbstractDocument,不包含任何格式特殊字符(想想记事本和Word)。当您只想存储文本(日志文件等)时,应该使用此选项

为HTML建模的文档。这个 该模型的目的是支持 浏览和编辑


当您创建/修改包含HTML代码并打算在浏览器中查看的文档时,应使用HTMLDocument。

您的要求不清楚(至少对我而言)。关键是您希望文档的显示方式

JTextField表示一行文本,因此排除该选项

JTextArea用于多行文本,但不支持特定属性。因此,您只能使用单一字体和单一颜色

JTextPane支持多行文本,并支持不同类型的属性,如粗体、斜体等

您需要的功能越多,文档就越复杂

如果此数据是可编辑的,则需要内置支持,以将每个文档限制为3行文本。同样,您对线条的定义不清楚。也就是说,一行可以是1k长或最多40个字符,因此可以在屏幕上显示为一行,而无需换行


我想JTextArea就是您所需要的,我相信它使用的是纯文档。

好的,我可以看出它有多么不干净。三行的部分实际上只是一个糟糕的方式来表达文本将会是多么的少。是否会有一个硬限制某个地方,我还没有决定。至于PlainDocument,它似乎没有字符级属性,所以不会/