【问题标题】:Painting editable JTextComponents with fractional widths?用小数宽度绘制可编辑的 JTextComponents?
【发布时间】: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
  • @StanislavL 是定期贡献者,所以我听从他的意见。与此同时,您可能会准备一个 sscce 来展示您描述的问题。例如,这个one 没有。
  • 安迪尔的答案是正确的。如果将“i18n”设置为 TRUE,则效果不可见。刚写了一个小测试用例。或者,您可以使用java-sl.com/Scale_In_JEditorPane_GlyphPainter.html 添加您自己的基于分数的画家。
  • 干得好安迪。您能否自行发布该问题的答案,然后接受该答案以便我们结束该问题?此外,如果他们解决了您的问题,您需要接受之前问题的答案。

标签: java swing antialiasing graphics2d jeditorpane


【解决方案1】:

这个问题好像作者和cmets的StanislavL早就回答了:

如果您将“i18n”设置为 TRUE,则效果不可见。刚写了一个 小测试用例。或者,您可以使用 java-sl.com/Scale_In_JEditorPane_GlyphPainter.html 添加你自己的 基于分数的画家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多