我一直在阅读javadocs试图掌握swing文档API但我无法从中得到一些明智的东西,因为有很多类:Document
,StyledDocument
,AbstractDocument
,DefaultStyledDocument
,PlainDocument
,HTMLDocument
和有人提及DocumentFilter
。这个问题在一般情况下更多,所以有人可以概述实现之间的差异以及不同接口和摘要的用途吗?
对于我的具体情况,我想要实现的是一个数据结构:
我可以使用的任何东西或者扩展内容更好吗?如果是这样,是什么?
答案 0 :(得分:5)
您列出的所有文档类都具有相同的基本功能,并且每个类都会根据需要填充的利基进行扩展。真的,这只是意识到你需要做什么并使用适当的文档类型。例如,如果我正在编辑HTML文件,那么我将使用HTMLDocument类。
我在下面的问题中列出了您要求的每个文档类的简要说明。
Document接口代表 整个HTML或XML文档。 从概念上讲,它是它的根源 文档树,并提供 主要访问文档的数据。
这是所有其他Document类型将继承的接口。它提供了要遵循的所有其他文档类型的合同。
此类实现锁定 它允许的文件的机制 多个读者或一个作家,和 作家必须等到所有观察者 已通知该文件 在开始之前的先前更改 该文件的另一个突变。
此类允许您使用不同类型的文档并使用非常丢失的规则集。这个类更难实现,因为它非常通用。
另一个为所有样式文档提供合同的界面。 DefaultStyledDocument实现了这个接口,所以我们接下来会这样做。
可以标记的文档 一个字符和段落样式 方式类似于富文本 格式。这个元素结构 文件代表风格交叉 用于风格运行。这些风格运行 映射到段落元素 结构(可能存在于某些结构中) 其他结构)。风格突破 在段落边界,因为逻辑 样式分配给段落 边界。
DefaultStyledDocument允许您在文档中放置特殊字符以帮助格式化等...当您考虑DefaultStyledDocument时,请考虑使用Microsoft Word。
一只包含一个文件的文件 DocumentFilter已修改(或者 通过插入或删除),它转发 适当的方法调用 DocumentFilter。
这是一个非常有用的类,它“监听”针对您的文档发生的事件(即修改),并在每个事件发生时执行操作。
实现AbstractDocument并且不包含任何类型的格式化特殊字符(Think notepad vs. Word)。当你只想存储文本(日志文件等)
时,你应该使用它模拟HTML的文档。该 这个模型的目的是支持 浏览和编辑。
当您创建/修改包含HTML代码且打算在浏览器中查看的文档时,应使用HTMLDocument。
答案 1 :(得分:1)
您的要求不明确(至少对我而言)。关键是您希望如何显示文档。
JTextField用于单行文本,因此排除了。
JTextArea用于多行文本,但不支持特定属性。所以你只能使用一种字体和一种颜色。
JTextPane支持多行文本,并支持不同类型的属性,如粗体,斜体等。
您需要的功能越多,文档就越复杂。
如果此数据是可编辑的,那么您需要建立支持以将每个文档限制为3行文本。您对线的定义也不清楚。这可以是1k长或最多40个字符的行,因此它可以作为单行显示在屏幕上而不包装。
我猜你的JTextArea就是你所需要的,我相信它使用的是PlainDocument。