2011-08-23 18 views
7

JTextArea के विपरीत, JTextPane में लाइन रैपिंग बंद करने का कोई विकल्प नहीं है। मुझे JTextPane एस में लाइन रैपिंग को बंद करने के लिए एक solution मिला, लेकिन ऐसा लगता है कि इस तरह की एक साधारण समस्या के लिए बहुत verbose लगता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?जेटीक्स्टपेन लाइन रैपिंग

उत्तर

10

No Wrap Text Pane देखें। लिंक से शामिल कोड यहां दिया गया है।

JTextPane textPane = new JTextPane(); 
JPanel noWrapPanel = new JPanel(new BorderLayout()); 
noWrapPanel.add(textPane); 
JScrollPane scrollPane = new JScrollPane(noWrapPanel); 
+1

केवल एक चीज में 'JTextPane' लपेटकर एक' JPanel' खड़ी स्क्रॉलबार को निष्क्रिय था: - यह getPreferredSize() फिर अधिभावी कहना द्वारा हल किया जा सकता 'हम हमेशा वास्तविक वरीय आकार चाहते हैं नहीं, वास्तव में'। – Jeffrey

+0

@ जेफरी, एक्सपी पर जेडीके 6_7 (और पुराने संस्करण) का उपयोग करके मेरे लिए ठीक काम करता है। मुझे नहीं लगता कि अगर मैं काम नहीं करता तो ब्लॉग एंट्री बनाने की सभी परेशानी होगी। अपना एसएससीसीई पोस्ट करें जो दिखाता है कि आपने इसका परीक्षण कैसे किया। – camickr

+0

एसएससीसीई छवियों के साथ पोस्ट किया गया। – Jeffrey

0

No Wrap Text Pane भी कोई वैकल्पिक समाधान एक JPanel में JTextPane लपेटकर की आवश्यकता नहीं है कि प्रदान करता है में मदद करता है, बजाय इसे getScrollableTracksViewportWidth() ओवरराइड करता है। मैं उस समाधान को पसंद करता हूं, लेकिन यह मेरे लिए काफी काम नहीं करता - मैंने देखा कि रैपिंग अभी भी तब होती है जब व्यूपोर्ट JTextPane की न्यूनतम चौड़ाई की तुलना में संकुचित हो जाता है।

मैंने पाया कि JEditorPanegetPreferredSize() अधिभावी है कोशिश करते हैं और करने के लिए 'ठीक' बातें जब व्यूपोर्ट पसंदीदा चौड़ाई के बजाय न्यूनतम चौड़ाई वापस लौट कर बहुत संकीर्ण है।

public class NoWrapJTextPane extends JTextPane { 
    @Override 
    public boolean getScrollableTracksViewportWidth() { 
     // Only track viewport width when the viewport is wider than the preferred width 
     return getUI().getPreferredSize(this).width 
      <= getParent().getSize().width; 
    }; 

    @Override 
    public Dimension getPreferredSize() { 
     // Avoid substituting the minimum width for the preferred width when the viewport is too narrow 
     return getUI().getPreferredSize(this); 
    }; 
}