1

我想要一个文档编辑器,其中某些文档行不可编辑、不可点击等。

我目前正在为我的编辑器和 DefaultStyledDocument 和 LeafElement、StyledEditorKit 和 ParagraphView 的扩展使用 JTextPane,以将文档文本解析为适当的元素并将它们分配给 ParagraphView 的适当扩展。到目前为止,一切都很美好。

那么下一步该怎么走呢?如何指定和强制某些扩展的 ParagraphViews 是“只读的”?我目前的方法是在 Leaf 和 Section ParagraphViews 中覆盖 getNextVisualPositionFrom 以防止箭头键将光标移动到受限制的 ParagraphView 中,但必须单独处理防止鼠标在受限制的 ParagraphView 内单击。

有没有更简单、更全面的方法呢?谢谢!

4

1 回答 1

1

经过更多研究,似乎更适合的另一种方法是对不可编辑的视图使用 ComponentView,而不是 ParagraphView。然后我可以在 ComponentView 的 createComponent() 方法中使用像 JTextArea 这样简单的东西,并将 setEditable 设置为 false。

它会自动忽略该视图中的鼠标单击。我仍然必须包含我的代码,以便在用户按下上、下、左、右时很好地跳过视图上的插入符号。否则,插入符号将在底层模型文本中不可见地移动。我还必须通过受保护的视图防止退格。即使视图是不可编辑的,下面的模型数据仍然会受到用户的影响。

于 2012-11-20T22:12:00.207 回答