2010-10-30 27 views
28

एक हर लेख में एक सवाल का जवाब जोड़कर "कैसे एक JEditorPane के लिए एक स्ट्रिंग संलग्न करने के लिए?"JTextPane एक नया स्ट्रिंग

jep.setText("<b>Termination time : </b>" + 
         CriterionFunction.estimateIndividual_top(individual) + " </br>"); 
jep.setText(jep.getText() + "Processes' distribution: </br>"); 

और एक परिणाम मैं "समाप्ति समय: 1000" मिल गया के रूप में: बिना "प्रक्रियाओं 'वितरण:"

ऐसा क्यों हुआ

jep.setText(jep.getText + "new string"); 

की तरह कुछ मैं इस की कोशिश की है है? ??

उत्तर

56

मुझे संदेह है कि टेक्स्ट जोड़ने के लिए अनुशंसित दृष्टिकोण है। इसका मतलब यह है कि हर बार जब आप कुछ पाठ बदलते हैं तो आपको पूरे दस्तावेज़ का पुन: उपयोग करने की आवश्यकता होती है। लोग ऐसा क्यों कर सकते हैं क्योंकि यह समझ में नहीं आता कि जेडडिटरपेन का उपयोग कैसे करें। इसमें मुझे शामिल है।

मैं बहुत एक JTextPane का उपयोग कर और फिर विशेषताओं का उपयोग पसंद करते हैं। एक साधारण उदाहरण हो सकता है कुछ की तरह:

JTextPane textPane = new JTextPane(); 
textPane.setText("original text"); 
StyledDocument doc = textPane.getStyledDocument(); 

// Define a keyword attribute 

SimpleAttributeSet keyWord = new SimpleAttributeSet(); 
StyleConstants.setForeground(keyWord, Color.RED); 
StyleConstants.setBackground(keyWord, Color.YELLOW); 
StyleConstants.setBold(keyWord, true); 

// Add some text 

try 
{ 
    doc.insertString(0, "Start of text\n", null); 
    doc.insertString(doc.getLength(), "\nEnd of text", keyWord); 
} 
catch(Exception e) { System.out.println(e); } 
+0

धन्यवाद, मैं इसे आजमाउंगा। – Dmitry

+0

यह काम करता है !!! लेकिन क्यों सेटटेक्स्ट + टेक्स्ट प्राप्त नहीं करता है? – Dmitry

+3

वह दस्तावेज़ को फिर से बनाएगा और आपके द्वारा पहले जोड़े गए सभी कस्टम विशेषताओं को खो देगा। – camickr

4

setText एक textpane में सभी पाठ सेट करने के लिए है। पाठ पर संलग्न, निकालने, जवाब देने के लिए StyledDocument इंटरफ़ेस का उपयोग करें।

txtPane.getStyledDocument().insertString(
    offsetWhereYouWant, "text you want", attributesYouHope); 
+0

धन्यवाद, इस्ताओ! – Dmitry

23

एक JEditorPane, बस एक एक JTextPane की तरह एक Document है कि आप तार डालने के लिए उपयोग कर सकते हैं।

आप एक JEditorPane में टेक्स्ट संलग्न करने के लिए करना चाहेंगे क्या इस स्निपेट है:

JEditorPane pane = new JEditorPane(); 
/* ... Other stuff ... */ 
public void append(String s) { 
    try { 
     Document doc = pane.getDocument(); 
     doc.insertString(doc.getLength(), s, null); 
    } catch(BadLocationException exc) { 
     exc.printStackTrace(); 
    } 
} 

मैं इस परीक्षण किया है और यह मेरे लिए ठीक काम किया। doc.getLength() वह जगह है जहां आप स्ट्रिंग को सम्मिलित करना चाहते हैं, जाहिर है इस पंक्ति के साथ आप इसे पाठ के अंत में जोड़ देंगे।

+1

धन्यवाद, यह काम करता है !!! – Dmitry

+0

लेकिन क्यों सेटटेक्स्ट + टेक्स्ट प्राप्त नहीं करता है? – Dmitry

+0

मैं निश्चित रूप से उत्तर नहीं दे सकता, मैंने जेडडिटरपेन के साथ बिल्कुल नहीं खेला है, बस जेटीक्स्टपेन ज्यादातर। इससे पहले कि मैं इसका जवाब दे सकूं, मुझे इसे खेलना और शोध करना होगा। –