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 に答える