【发布时间】:2012-02-07 21:50:43
【问题描述】:
我正在使用 JEditorPane,并且(当然)当我使用抗锯齿和小数宽度绘制组件时,文本看起来要好得多。换句话说:
JEditorPane pane = new JEditorPane() {
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
super.paint(g);
}
}
如果我用静态的、不可选择的文本来做这件事,它会画得很漂亮。然而,一旦我开始在它上面拖动一个选择,我就会在帧和伪影之间得到一些奇怪的抖动。有没有办法用分数指标进行绘制并避免这种怪异?我也尝试在插入符号上设置属性,但没有成功。
【问题讨论】:
-
好的,我在这里找到了答案:java-sl.com/Scale_In_JEditorPane.html(那家伙有一些很棒的文章,如果你真的在研究 Java 中的文本组件,顺便说一句......)解决方案是添加这个调用:pane.getDocument().putProperty("i18n", Boolean.TRUE);这会强制使用 GlyphPainter2 而不是通常的 GlyphPainter1 来绘制字形。你知道的越多!
-
对,我认为没有人比 JTextComponents 更适合 (@StanislavL) stackoverflow.com/users/301607/stanislavl
-
安迪尔的答案是正确的。如果将“i18n”设置为 TRUE,则效果不可见。刚写了一个小测试用例。或者,您可以使用java-sl.com/Scale_In_JEditorPane_GlyphPainter.html 添加您自己的基于分数的画家。
-
干得好安迪。您能否自行发布该问题的答案,然后接受该答案以便我们结束该问题?此外,如果他们解决了您的问题,您需要接受之前问题的答案。
标签: java swing antialiasing graphics2d jeditorpane