Document类之间的区别

时间:2010-05-24 14:28:53

标签: java swing

我一直在阅读javadocs试图掌握swing文档API但我无法从中得到一些明智的东西,因为有很多类:DocumentStyledDocumentAbstractDocumentDefaultStyledDocumentPlainDocumentHTMLDocument和有人提及DocumentFilter。这个问题在一般情况下更多,所以有人可以概述实现之间的差异以及不同接口和摘要的用途吗?

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

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

我可以使用的任何东西或者扩展内容更好吗?如果是这样,是什么?

2 个答案:

答案 0 :(得分:5)

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

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

Document

  

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

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

AbstractDocument

  

此类实现锁定   它允许的文件的机制   多个读者或一个作家,和   作家必须等到所有观察者   已通知该文件   在开始之前的先前更改   该文件的另一个突变。

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

StyledDocument

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

DefaultStyledDocument

  

可以标记的文档   一个字符和段落样式   方式类似于富文本   格式。这个元素结构   文件代表风格交叉   用于风格运行。这些风格运行   映射到段落元素   结构(可能存在于某些结构中)   其他结构)。风格突破   在段落边界,因为逻辑   样式分配给段落   边界。

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

DocumentFilter

  一只包含一个文件的文件   DocumentFilter已修改(或者   通过插入或删除),它转发   适当的方法调用   DocumentFilter。

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

PlainDocument

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

时,你应该使用它

HTMLDocument

  

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

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

答案 1 :(得分:1)

您的要求不明确(至少对我而言)。关键是您希望如何显示文档。

JTextField用于单行文本,因此排除了。

JTextArea用于多行文本,但不支持特定属性。所以你只能使用一种字体和一种颜色。

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

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

如果此数据是可编辑的,那么您需要建立支持以将每个文档限制为3行文本。您对线的定义也不清楚。这可以是1k长或最多40个字符的行,因此它可以作为单行显示在屏幕上而不包装。

我猜你的JTextArea就是你所需要的,我相信它使用的是PlainDocument。