1

是否可以使用painter或其他一些技术来自定义带有合成器的控件上的文本绘制?

我知道你可以在 SynthPainter 中实现paintButtonBorderpaintButtonBacground,但我想知道有没有办法用文本做到这一点?也许一些解决方法?

4

1 回答 1

1

通常你会创建一个SynthGraphicsUtils子类,覆盖paintText(SynthContext ss, Graphics g, String text, Icon icon, int hAlign, int vAlign, int hTextPosition, int vTextPosition, int iconTextGap, int mnemonicIndex, int textOffset)并从你的 button 方法返回一个子类的SynthStyle实例getGraphicsUtils(SynthContext context)

无论如何,如果你要将绘画委托给超级实现,如果text是在 HTML 中(以<html>标签开头),请注意某些细节:

  1. 超级实现将绘制ss.getComponent().getText()而不是text.
  2. 超级实现会在绘制之前手动设置文本颜色。对于无样式文本,这将是ss.getComponent().getForeground(). 对于样式文本,这将匹配 HTML/CSS 中指定的颜色。
于 2013-08-31T05:03:01.063 回答