2013-04-07 37 views
5

yılında pikselleştirilmiş. HTML bir örnek şuna benzer:Sırasız Liste Mermiler Bir JEditorPane içinde bazı metni görüntülemek için bir HTML sırasız liste kullanıyorum JEditorPane

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

Bu, tüm iyi ve güzel çalışır, ancak garip <li> tarafından üretilen mermi alıyor yanındaki metinle aynı kalitede olmasını görünmüyor. (Önemliyse Mac OS 10.7.5'i çalıştırarak). Dairesel mermi bloklu ve pikselleştirilmiş:

Normal yakınlaştırma: içinde

enter image description here

zumlandı: İn büyültüldüğünde

enter image description here

olarak özellikle belirgindir, bu sadece bir blok simetrik olmayan ve anti-aliasing formundan yoksun pikseller, ki bu da ikna edici bir dairesel mermi noktasından daha azını oluşturur. Yanındaki metne kıyasla, normal zumda bile göz alıcı bir gözle "kapalı" görünüyor.

bunu düzeltmek herhangi bir yolu var mı?

DÜZENLEME: • karakterini Kullanma (seçenek Mac'te +) pikselli görünmüyor metinde daha küçük bir mermi noktası oluşturur. Tabii ki bu karakteri <ul><li> kullanmak yerine el ile ekleyebilirim, ancak yapabilseydim HTML sırasız liste kullanmak istiyorum.

cevap

4

kullanın kenar yumuşatma özelliği KEY_ANTIALIASING açın.

Bazı render globally ipuçları ayarlamak, ama bu KEY_ANTIALIASING için çalışmak görünmüyor, bu nedenle JEditorPane ait paint() yöntemini geçersiz kılmak gerekir.

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

Mükemmel çalışıyor! Maalesef, global olarak ipuçları vermek için işaret ettiğiniz bağlantıda, anahtar kenar yumuşatma (yalnızca metin) için çalışmadığını belirten bir not bulunmaktadır. Yine de, bu herhangi bir aksama olmadan çalışır. Ödülün tadını çıkar! – Thunderforge

+0

Teşekkürler. Yorumunuzu dahil etmek için cevabımı düzenledim. – Enwired

2

Sen mermi noktaları değiştirmek gerekir. Daha iyi görünen bir mermi noktası görüntüsü oluşturun ve yeni mermi görüntüsünü kullanması için editör bölmesine CSS ekleyin. ipuçları render

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

Ben resim yüklemek için alınamıyor. 'new File (u) .exists()' döndürür, ancak tamamen farklı bir görüntüyü denesem bile varsayılan mermi noktasını görüyorum. Ayrıca, dahili bir görüntü kullanmamı gerektirmeyen bir yöntemi tercih ederim. Bunun yerine '' '(U + 2022) kullanabilir miyim? – Thunderforge

+0

Şu anda kodu düzelten bir incelemesi var. Benim için çalışmadığının sebebinin, bir URL olduğu için '' 'file: ///' ile başlaması gerektiğini öğrendim. Ayrıca, belirli bir JEditorPane kurucusu kullanılırsa kodun hiç işe yaramadığını öğrendim. Çözüm şimdi çalışıyor, ancak diğer çözümü daha iyi seviyorum çünkü dışsal bir görüntüye dayanmak zorunda kalmadan pikselleştirme problemini çözüyor. – Thunderforge

İlgili konular