JTextArea
के विपरीत, JTextPane
में लाइन रैपिंग बंद करने का कोई विकल्प नहीं है। मुझे JTextPane
एस में लाइन रैपिंग को बंद करने के लिए एक solution मिला, लेकिन ऐसा लगता है कि इस तरह की एक साधारण समस्या के लिए बहुत verbose लगता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?जेटीक्स्टपेन लाइन रैपिंग
7
A
उत्तर
10
No Wrap Text Pane देखें। लिंक से शामिल कोड यहां दिया गया है।
JTextPane textPane = new JTextPane();
JPanel noWrapPanel = new JPanel(new BorderLayout());
noWrapPanel.add(textPane);
JScrollPane scrollPane = new JScrollPane(noWrapPanel);
2
0
No Wrap Text Pane भी कोई वैकल्पिक समाधान एक JPanel
में JTextPane
लपेटकर की आवश्यकता नहीं है कि प्रदान करता है में मदद करता है, बजाय इसे getScrollableTracksViewportWidth()
ओवरराइड करता है। मैं उस समाधान को पसंद करता हूं, लेकिन यह मेरे लिए काफी काम नहीं करता - मैंने देखा कि रैपिंग अभी भी तब होती है जब व्यूपोर्ट JTextPane
की न्यूनतम चौड़ाई की तुलना में संकुचित हो जाता है।
मैंने पाया कि JEditorPane
getPreferredSize()
अधिभावी है कोशिश करते हैं और करने के लिए 'ठीक' बातें जब व्यूपोर्ट पसंदीदा चौड़ाई के बजाय न्यूनतम चौड़ाई वापस लौट कर बहुत संकीर्ण है।
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);
};
}
केवल एक चीज में 'JTextPane' लपेटकर एक' JPanel' खड़ी स्क्रॉलबार को निष्क्रिय था: - यह
getPreferredSize()
फिर अधिभावी कहना द्वारा हल किया जा सकता 'हम हमेशा वास्तविक वरीय आकार चाहते हैं नहीं, वास्तव में'। – Jeffrey@ जेफरी, एक्सपी पर जेडीके 6_7 (और पुराने संस्करण) का उपयोग करके मेरे लिए ठीक काम करता है। मुझे नहीं लगता कि अगर मैं काम नहीं करता तो ब्लॉग एंट्री बनाने की सभी परेशानी होगी। अपना एसएससीसीई पोस्ट करें जो दिखाता है कि आपने इसका परीक्षण कैसे किया। – camickr
एसएससीसीई छवियों के साथ पोस्ट किया गया। – Jeffrey