JTextPane:渲染器 of/for setCharacterAttributes 是什么?
JTextPane: What's the renderer of/for setCharacterAttributes?
我的应用程序中有一个 JTextPane,我为各种 words/letters 准备了一些样式。这些样式通过 setCharacterAttributes
应用。现在我打算为某些样式的背景设置样式:如果样式定义了背景(比如灰色)并且我想柔化边角(圆角,即 3px)。
有没有办法添加在 setCharacterAttributes 中使用的特殊渲染器?或者,您是否建议通过 pane.getHighlighter().addHighlight(...)
添加 HighlightPainter
?
好的,你的问题不是很清楚,但如果我理解正确的话,你打算自定义字符背景属性的默认行为。您描述了 2 种方法,其中一种可能比另一种容易得多。
1) 基于角色属性(复杂的):您需要通过覆盖javax.swing.text.GlyphView
中的paint
方法来定义您的行为。然后,您需要更改 EditorKit 的 ViewFactory 以使其将您的更改考虑在内。我不推荐这种方法。
2) 基于高光(更简单):您需要定义一个新的 javax.swing.text.Highlighter.HighlightPainter
来绘制您想要的圆形边框。然后,您需要找到设置了背景的每组文本。您删除背景并添加您的自定义荧光笔。你可以优化流程,但我想你已经掌握了这一部分。
我的应用程序中有一个 JTextPane,我为各种 words/letters 准备了一些样式。这些样式通过 setCharacterAttributes
应用。现在我打算为某些样式的背景设置样式:如果样式定义了背景(比如灰色)并且我想柔化边角(圆角,即 3px)。
有没有办法添加在 setCharacterAttributes 中使用的特殊渲染器?或者,您是否建议通过 pane.getHighlighter().addHighlight(...)
添加 HighlightPainter
?
好的,你的问题不是很清楚,但如果我理解正确的话,你打算自定义字符背景属性的默认行为。您描述了 2 种方法,其中一种可能比另一种容易得多。
1) 基于角色属性(复杂的):您需要通过覆盖javax.swing.text.GlyphView
中的paint
方法来定义您的行为。然后,您需要更改 EditorKit 的 ViewFactory 以使其将您的更改考虑在内。我不推荐这种方法。
2) 基于高光(更简单):您需要定义一个新的 javax.swing.text.Highlighter.HighlightPainter
来绘制您想要的圆形边框。然后,您需要找到设置了背景的每组文本。您删除背景并添加您的自定义荧光笔。你可以优化流程,但我想你已经掌握了这一部分。