2013-04-07 6 views
5

JEditorPane内にテキストを表示するために、HTMLの順序付けられていないリストを使用しています。 HTMLのサンプルは次のようになります。JEditorPane内のピクセルで照合された順序付けられていない箇条書き

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

これはすべてが順調と良い動作しますが、妙に<li>によって生成された弾丸は、それが隣にあるテキストと同じ品質であることを見ていません。 (Mac OS 10.7.5を実行している場合)。円形の弾丸はブロック状とピクセル化に見える:

ノーマルズーム:それがズームアップされたときに、これはわずか1ブロックです

enter image description here

として特に顕著:

enter image description here

ズームイン対称ではなく、アンチエイリアスの形を持たないピクセルのことです。これは、説得力のない円形箇条書きポイントになります。隣のテキストと比較すると、通常のズームでも目に見えないように見えます。

これを修正できる方法はありますか?

EDIT:•文字(オプションMacの + )を使用するには、ピクセル化に見えないテキストが小さい箇条書きを作成します。私はもちろん、<ul><li>を使用するのではなく、手動でこの文字を挿入することができますが、できればHTML順不同リストを使用したいと思います。

答えて

4

レンダリングヒントを使用してアンチエイリアスプロパティKEY_ANTIALIASINGを有効にします。あなたは、いくつかのレンダリングを設定

globallyをヒントが、それはあなたがJEditorPanepaint()メソッドをオーバーライドする必要があるので、KEY_ANTIALIASINGのために動作するようには思えません。

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); 
      } 
     });  
     } 
} 
+0

完璧に動作します!残念ながら、レンダリングヒントのグローバルなリンク先は、キーのアンチエイリアス(テキストのみ)では機能しないというメモがあります。それでも、これは何のヒッチなしで動作します。賞金をお楽しみください! – Thunderforge

+0

ありがとうございます。私はあなたのコメントを組み込むために私の答えを編集しました。 – Enwired

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)); 
+0

イメージを読み込むことができません。 'new File(u).exists()'はtrueを返しますが、まったく別のイメージを試してもデフォルトの箇条書きポイントが表示されます。また、私は内部画像を使用する必要のない方法を好むだろう。代わりに '?'(U + 2022)を使うことができますか? – Thunderforge

+0

私は現在、コードを修正するレビューを編集しています。私はそれが私のためにうまくいかなかった理由は、 'uは' URLであるので 'file:///'で始まらなければならないことを知りました。また、特定のJEditorPaneコンストラクタが使用されている場合、コードがまったく機能しないことがわかりました。このソリューションは現在は機能していますが、外部の画像に頼ることなくピクセル化の問題を解決するため、他のソリューションのほうが優れています。 – Thunderforge

関連する問題