Java StyledDocument:我如何确保用户类型永远不会出现的样式?

时间:2010-11-13 16:17:36

标签: java swing

用户输入一些文字。当他们按下按钮时,他们键入的内容将被拆分并进行颜色编码:

colors.setCharacterAttributes(characters, tokens[x].length(), formatBlue, true);

使用一套规则。


当他们在characters定义的位置与位置characters + tokens[x].length()之间进行编辑时,会以formatBlue样式显示。

但是,在用户下次按下我的“颜色代码”按钮之前,我希望它是黑色的。

简而言之:理想的效果是输入的所有内容都应该是黑色的,直到程序的措辞和颜色不同为止。


到目前为止,我所拥有的最佳解决方案是检测插入符号何时改变位置,然后执行:

setLogicalStyle(textArea.getCaretPosition(), formatBlack)

任何更好的建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

  

所需的效果是输入的所有内容应始终为黑色

您可以尝试使用DocumentFilter。如果要插入的文本不包含属性,则指定默认的黑色属性。

阅读Implementing a Document Filter上的Swing教程中的部分以获取更多信息。

答案 1 :(得分:1)

您可以从JEditorPane获取EditorKit。它是StyledEditorKit实例。因此,您可以从工具包中获取InputAtributes并删除所有属性。因此,所有输入都将使用空的AttributeSet。