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