如何创建自定义 Swing 文档结构
我有一个 JEditorPane
,其中包含一个自定义 EditorKit
和一个自定义 Document
(源自 DefaultStyledDocument)。
以下是 JEditorPane
内容的示例:
第一个段落
第二个段落
对于上面的示例,我得到了具有以下 XML 等效项的文档结构:
<root>
<section>
<paragraph>
<content>first</content>
<content bold="true">paragraph</content>
</paragraph>
<paragraph>
<content>second paragraph</content>
<content>\n</content>
</paragraph>
</section>
</root>
请注意,上面的标签名称是由 Element.getName() 函数确定的。
我的目的是通过自定义元素类型扩展此结构,以编辑样式文本以外的内容。
示例将编辑器扩展为音符编辑器获得如下所示的 XML 结构:
<root>
<section>
<paragraph>
<content>first</content>
<content bold="true">paragraph</content>
</paragraph>
<musicnotes>
<bar>
<note>C</note>
<note>D</note>
<note>E</note>
</bar>
</musicnotes>
</section>
</root>
正如我所见,Style- 和 Paragraph-Elements 是根据 Document.insertString() 和 Document.setCharacterAttributes() 方法创建的。
我的问题是我不知道如何重写这些方法(或编写挂件)以不返回默认结构而是使用自定义元素种类。
我什至不知道这是否是正确的方法。我是否必须创建自己的文档接口实现才能创建自定义文档结构?
I have a JEditorPane
holding a custom EditorKit
and a custom Document
(derived from DefaultStyledDocument).
The following is an example for the content of the JEditorPane
:
first paragraph
second paragraph
For the example above I get a document-structure with the following XML-equivalent:
<root>
<section>
<paragraph>
<content>first</content>
<content bold="true">paragraph</content>
</paragraph>
<paragraph>
<content>second paragraph</content>
<content>\n</content>
</paragraph>
</section>
</root>
Note that the tag names above are determined by the Element.getName() function.
My intention is, to extend this structure by custom element types to edit content other than styled text.
An example would be extending the editor to be a music-note editor to get an XML-structure like this:
<root>
<section>
<paragraph>
<content>first</content>
<content bold="true">paragraph</content>
</paragraph>
<musicnotes>
<bar>
<note>C</note>
<note>D</note>
<note>E</note>
</bar>
</musicnotes>
</section>
</root>
As I see it, the Style- and Paragraph-Elements are created upon Document.insertString() and Document.setCharacterAttributes() methods.
My problem is that I have no clue how to override these methods (or write pendants) to not to go back to the default structure but to use custom element kinds.
At all I don't even know if this is the correct approach. Do I have to create my very own Implementation of the Document-interface to create a custom document structure?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅创建表的示例。
http://java-sl.com/JEditorPaneTables.html
您可以使用相同的定义所需的结构。
See the example of tables creation.
http://java-sl.com/JEditorPaneTables.html
You can use the same defining desired structure.