2013-04-07 10 views
5

में पिक्सलेटेड देखें I JEditorPane के भीतर कुछ टेक्स्ट प्रदर्शित करने के लिए एक HTML unordered सूची का उपयोग कर रहा हूं। एचटीएमएल का एक नमूना इस तरह दिखता है:अनियंत्रित सूची बुलेट JEditorPane

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

यह सब अच्छी तरह से और अच्छा काम करता है, लेकिन अजीब <li> द्वारा उत्पन्न गोलियों पाठ इसके बगल में है के रूप में एक ही गुणवत्ता होने के लिए मत देखो। (यदि यह मायने रखता है तो मैक ओएस 10.7.5 चल रहा है)। परिपत्र गोलियों ब्लॉक वाले और pixelated देखो:

सामान्य ज़ूम:

enter image description here

में ज़ूम किया गया:

enter image description here

के रूप में विशेष रूप से स्पष्ट है जब यह ज़ूम इन करता है, यह सिर्फ एक ब्लॉक है पिक्सेल के जो सममित नहीं हैं और एंटी-एलाइजिंग के किसी भी रूप की कमी है, जो कि परिपत्र बुलेट बिंदु से कम के लिए बनाता है। इसके बगल में दिए गए पाठ की तुलना में, यह सामान्य ज़ूम पर भी समझदार आंखों को "बंद" लग रहा है।

क्या कोई तरीका है कि मैं इसे ठीक कर सकता हूं?

संपादित करें: • चरित्र का उपयोग करना (विकल्प + 8 पर एक मैक) पाठ कि pixelated नहीं लगती में एक छोटे बुलेट बिंदु बनाता है। मैं <ul><li> का उपयोग करने के बजाय मैन्युअल रूप से इस चरित्र को सम्मिलित कर सकता हूं, लेकिन अगर मैं कर सकता हूं तो मैं एक HTML unordered सूची का उपयोग करना चाहता हूं।

उत्तर

4

उपयोग संकेत प्रतिपादन विरोधी aliasing संपत्ति KEY_ANTIALIASING चालू करने के लिए।

आप कुछ प्रतिपादन संकेत globally निर्धारित करते हैं, लेकिन यह है कि KEY_ANTIALIASING के लिए काम करने के लिए प्रतीत नहीं होता है, तो आप JEditorPane की paint() विधि ओवरराइड करने के लिए की जरूरत है।

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

आपको बुलेट बिंदुओं को संशोधित करने की आवश्यकता है। बेहतर दिखने वाले बुलेट बिंदु की एक छवि बनाएं, और फिर अपनी नई बुलेट छवि का उपयोग करने के लिए संपादक फलक में सीएसएस जोड़ें।

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

मुझे छवि लोड करने के लिए नहीं मिल सकता है। 'नई फाइल (यू) .exists() 'सच आती है, लेकिन मैं सिर्फ डिफ़ॉल्ट बुलेट बिंदु देखता हूं, भले ही मैं पूरी तरह से अलग छवि का प्रयास करता हूं। साथ ही, मैं एक ऐसी विधि पसंद करूंगा जिसने मुझे आंतरिक छवि का उपयोग करने की आवश्यकता नहीं है। क्या मैं इसके बजाय '•' (यू +2022) का उपयोग करने में सक्षम हूं? – Thunderforge

+0

मुझे वर्तमान में समीक्षा में एक संपादन मिला है जो कोड को हल करता है। मुझे पता चला कि जिस कारण से यह मेरे लिए काम नहीं करता था, वह 'फ़ाइल' से शुरू होना चाहिए: /// 'क्योंकि यह एक यूआरएल है। साथ ही, मुझे पता चला कि एक निश्चित जेडडिटरपेन कन्स्ट्रक्टर का उपयोग होने पर कोड बिल्कुल काम नहीं करता है। समाधान अब काम करता है, लेकिन मुझे अन्य समाधान बेहतर पसंद है क्योंकि यह बाहरी छवि पर भरोसा किए बिना पिक्सेलेशन समस्या हल करता है। – Thunderforge

संबंधित मुद्दे