2011-08-12 36 views
5

जेटीक्स्टपेन में शब्द-रैपिंग को वास्तव में कैसे लागू किया गया है?जेडक्स्टपेन में वर्ड-रैपिंग कैसे कार्यान्वित किया गया है, और मैं इसे रिक्त स्थान के बिना स्ट्रिंग कैसे लपेटूं?

मैं समझने की कोशिश कर रहा हूं कि यह कैसे काम करता है ताकि मैं व्यवहार को संशोधित कर सकूं। अभी, अगर मेरे पास एक JSCrollPane के अंदर एक मानक JTextPane है, तो यह रिक्त स्थान पर टेक्स्ट तोड़ देगा, लेकिन लंबे शब्दों के अंदर नहीं - यदि विंडो के मुकाबले रिक्त स्थान के बिना पाठ की स्ट्रिंग है, तो यह लपेटकर/ब्रेक नहीं होगा और एक क्षैतिज स्क्रॉलबार दिखाई देगा। जैसे-जैसे पाठ की चौड़ाई बढ़ जाती है, पैराग्राफ व्यू की चौड़ाई (getWidth() के माध्यम से) पाठ को पकड़ने के लिए बढ़ जाती है।

This article by Lapitsky का कहना है कि LabelView.getBreakWeight() रिक्त स्थान और View.GoodBreakWeight लेबल के लिए रिक्त स्थान के बिना साथ लेबल के लिए रिटर्न View.ExcellentBreakWeight (और GlyphView.java में कोड इस बात की पुष्टि करने लगता है), तो क्यों इसे तोड़ने नहीं करता है? क्या यह किसी भी तरह GoodBreakWeight के बजाय BadBreakWeight लौट रहा है? या क्या कुछ लेआउट समस्या है? या कोई बग है?

//somewhere inside JPanel or JFrame constructor 
JTextPane textPane = new JTextPane(); 
JScrollPane scrollPane = new JScrollPane(textPane); 
add(scrollPane); 

ध्यान दें कि यह अभी भी अगर मैं स्क्रॉल फलक बाहर ले जाना और सिर्फ पाठ फलक का उपयोग लपेट नहीं करता है (यह बस के रूप में यह जाता है काटा गया हो जाता है:

यहाँ कुछ कोड (आपके दृश्य मनोरंजन के लिए) है खिड़की के बाहर)।


स्विंग के लिए javadocs कैसे कुछ वस्तुओं (JTextPane, देखें की, और संबंधित वस्तुओं की तरह) एक साथ काम करने पर काफी विस्तार में जाने के नहीं है। क्या इस तरह के वर्गों के डिजाइन का कोई और दस्तावेज है, शायद प्रत्येक वर्ग के उद्देश्य का विवरण देना और वे सभी कैसे मिलकर काम करते हैं? क्या यह सार्वजनिक रूप से उपलब्ध नहीं है? (या क्या मुझे अकेला ही इस तरह की चीजों में परेशानी हो रही है? या उन चीजों तक सीमित अपर्याप्त दस्तावेज है जिन्हें एक सामान्य डेवलपर द्वारा निपटाया जाने की उम्मीद नहीं है?)

उत्तर

4

कस्टम रैप के बारे में लिंक (मजबूर लपेटें और कोई लपेटें नहीं)। http://java-sl.com/wrap.html

पत्र के बारे में लिंक लपेट http://java-sl.com/tip_html_letter_wrap.html

+1

दिए गए उदाहरण काम करता है, लेकिन लाइन ब्रेक अनदेखी कर रहे हैं! छोटे समायोजन के साथ अपना दूसरा लिंक आज़माएं: 'htmlTextPane.setText ("firstLine
सेकेंडलाइन
थर्डलाइन
'। यह लेटर-रैपिंग का समर्थन करेगा, लेकिन'
'लाइन ब्रेक को अनदेखा कर दिया जाएगा। मैं इसे हल करने में सक्षम नहीं हूं , यहां तक ​​कि मूल मूल विधियों के साथ कोड अंश को मिलाकर भी [यहां] पाया जा सकता है (http://grepcode.com/file_/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/ स्विंग/टेक्स्ट/एचटीएमएल/HTMLEditorKit.java /? v = स्रोत) और [यहां] (http://developer.classpath.org/doc/javax/swing/text/View-source.html) – Blauhirn

+0

दूसरा लिंक था वास्तव में मैं क्या चाहता था .. इसे पोस्ट करने के लिए धन्यवाद! – Panayotis