Document类之间的区别

gwo*_*pq9 3 java swing

我一直在阅读试图抓住围绕摆动文件API的javadoc,但我不能得到的东西懂事了它,因为有这么多的类:Document,StyledDocument,AbstractDocument,DefaultStyledDocument,PlainDocument,HTMLDocument,有人提及DocumentFilter.这个问题在一般情况下更多,所以有人可以概述实现之间的差异以及不同的接口和摘要的用途吗?

对于我的具体情况,我想要实现的是一个数据结构,它将:

  • 只持有三行文字.和
  • 属性不能是每行或文档.我会在其他一些结构中有几千个这样的
  • 开销很重要.

我能用于此的任何东西,还是扩展一些东西更好?如果是这样,什么?

Rob*_*ner 5

您列出的所有Document类都具有相同的基本功能,并且每个类都基于需要填充的利基进行扩展.真的,这只是意识到你需要做什么并使用适当的文档类型.例如,如果我正在编辑HTML文件,那么我将使用HTMLDocument类.

我在下面的问题中列出了您要求的每个文档类的简要说明.

文献

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

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

是AbstractDocument

该类为文档实现了一个锁定机制,它允许多个读者或一个编写器,并且编写者必须等到文档的所有观察者在开始对文档的另一个突变之前已经通知了先前的更改.

此类允许您使用不同类型的文档并使用非常丢失的规则集.这个类更难实现,因为它非常通用.

StyledDocument中的

另一个为所有样式文档提供合同的界面. DefaultStyledDocument实现了这个接口,所以我们接下来会这样做.

DefaultStyledDocument

可以使用与富文本格式类似的方式标记字符和段落样式的文档.此文档的元素结构表示样式运行的样式交叉.这些样式运行映射到段落元素结构(可能驻留在某些其他结构中).由于逻辑样式被分配给段落边界,因此样式在段落边界处运行.

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

的DocumentFilter

如果修改了包含DocumentFilter的Document(通过insert或remove),它会将适当的方法调用转发给DocumentFilter.

这是一个非常有用的类,它"监听"针对您的文档发生的事件(即修改),并在每个事件发生时执行操作.

PlainDocument

实现AbstractDocument并且不包含任何类型的格式化特殊字符(Think notepad vs. Word).当你只想存储文本(日志文件等)时,你应该使用它

HTMLDocument的

一个模拟HTML的文档.此模型的目的是支持浏览和编辑.

在创建/修改包含HTML代码并且要在浏览器中查看的文档时,应使用HTMLDocument.