6

我正在使用 HTML 无序列表在 JEditorPane 中显示一些文本。HTML 示例如下所示:

<ul><li>Cautious</li>
<li>Curious</li>
</ul>

这一切都很好,但奇怪的是,生成的项目符号<li>看起来与它旁边的文本质量不同。(如果重要,运行 Mac OS 10.7.5)。圆形子弹看起来是块状和像素化的:

正常变焦:

在此处输入图像描述

放大:

在此处输入图像描述

放大时尤其明显,这只是一个不对称的像素块,缺乏任何形式的抗锯齿,这使得圆形项目符号点不太令人信服。与它旁边的文字相比,即使在正常变焦下,它在明眼人眼中也显得“偏离”。

有什么办法可以解决这个问题吗?

编辑:使用 • 字符(在 Mac 上为option+ 8)会在文本中创建一个看起来不像素化的较小项目符号点。我当然可以手动插入此字符而不是使用<ul><li>,但如果可以的话,我想使用 HTML 无序列表。

4

2 回答 2

8

使用渲染提示打开抗锯齿属性KEY_ANTIALIASING

您全局设置了一些渲染提示,但这似乎不起作用KEY_ANTIALIASING,因此您需要覆盖paint().JEditorPane

public class HTMLTest {    

      public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
          @Override
          public void run() {
            String html = "<ul><li>Cautious</li><li>Curious</li></ul>";
            JEditorPane pane = new JEditorPane("text/html", html) {

              public void paint(Graphics g) {
                Graphics2D g2d = (Graphics2D) g.create();
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                super.paint(g2d);
                g2d.dispose();
              }

            };
            pane.setVisible(true);

            JOptionPane.showMessageDialog(null, pane);
          }
        });    
      }
}
于 2013-05-10T23:01:53.107 回答
2

您需要修改要点。创建一个更好看的项目符号点的图像,然后将 CSS 添加到编辑器窗格以使其使用新的项目符号图像。

JEditorPane pane = new JEditorPane();
String u = "C:/path/to/bullet.png";
HTMLEditorKit htmlEditorKit = (HTMLEditorKit) pane.getEditorKit();
StyleSheet styleSheet = htmlEditorKit.getStyleSheet();
styleSheet.addRule(String.format("ul{list-style-image:url(%s);margin:0px 20px;", u));
于 2013-04-07T23:19:26.343 回答