2011-08-08 17 views
9

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

इस कोड एक्सएमएल फ़ाइल

Element element = (Element)nodes1.item(i); 
      String vær = getElementValue(element,"body"); 
      String v = vær.replaceAll("<.*>", ""); 
      String forecast = "Vær: " + v; 

इस मामले स्ट्रिंग मैं स्ट्रिंग वी करने के लिए कुछ लाइनब्रेक जोड़ना चाहते हैं में से डेटा निकालता है। स्ट्रिंग वी xml फ़ाइल से पार्स डेटा होता है। स्ट्रिंग पूर्वानुमान वापस कर दिया गया है और जेएलएबल को एक पाठ के रूप में सेट किया गया है।

बस पूछें कि कुछ अस्पष्ट है, अग्रिम धन्यवाद!

उत्तर

12

मैं इसके बजाय JTextArea का उपयोग करने और रैपिंग चालू करने का सुझाव देता हूं। JLabel में इसे करने का एकमात्र तरीका लाइन ब्रेक <br /> डालना है, जो आपकी स्थिति में (कम से कम आसानी से नहीं) काम नहीं करेगा यदि आप पहले से टेक्स्ट नहीं जानते हैं।

JTextArea अधिक लचीला है। डिफ़ॉल्ट रूप से यह अलग दिखता है, लेकिन आप JLabel की तरह दिखने के लिए कुछ डिस्प्ले गुणों के साथ चारों ओर झुका सकते हैं।


एक साधारण संशोधित उपयोग का उदाहरण देखने से How to Use Text Areas ट्यूटोरियल लिया -

public class JTextAreaDemo { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() {   
       createAndShowGUI(); 
      } 
     }); 
    } 

    private static void createAndShowGUI(){ 
     final JFrame frame = new JFrame("JTextArea Demo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     final JPanel panel = new JPanel(); 
     JTextArea textArea = new JTextArea(
       "If there is anything the nonconformist hates worse " + 
       "than a conformist, it's another nonconformist who " + 
       "doesn't conform to the prevailing standard of nonconformity.", 
       6, 
       20); 
     textArea.setFont(new Font("Serif", Font.ITALIC, 16)); 
     textArea.setLineWrap(true); 
     textArea.setWrapStyleWord(true); 
     textArea.setOpaque(false); 
     textArea.setEditable(false); 

     panel.add(textArea); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

enter image description here

+1

+1, आप घटक को गैर-अपारदर्शी बनाना चाहते हैं (यानी 'setOpaque (false) ')। – mre

+0

मैंने एक साधारण उपयोग उदाहरण शामिल किया। अगर आपको लगता है कि यह अनावश्यक है, तो कृपया मुझे बताएं और मैं इसे वापस रोल करूंगा। :) – mre

+0

लेकिन मैं JTextArea का आकार कैसे बदल सकता हूं ताकि इसमें प्रत्येक पंक्ति पर कुछ charcaters शामिल हो। लाइनब्रेक से पहले प्रत्येक लाइन पर 30 Charcaters? क्यूस मैं चाहता हूं कि जेपीनेल पूरी स्क्रीन पर हो और पैक न करें(); –

5

जेएलएबल HTML टेक्स्ट प्रदर्शित करने में सक्षम है, यानी यदि आप <html>your text<html> के साथ अपना टेक्स्ट लपेटते हैं तो यह टेक्स्ट को लपेटने में सक्षम हो सकता है। हालांकि इसका परीक्षण नहीं किया गया है, इसलिए वाईएमएमवी।

+1

+1, और यहाँ एक अच्छा ट्यूटोरियल है - [कैसे करें स्विंग घटक में HTML का उपयोग करें] (http://download.oracle.com/javase/tutorial/uiswing/components/html.html) – mre

1

आप गतिशील रूप से खुद को आकार बदलने के लिए पाठ फिट करने के लिए अपने JLabel बता सकते हैं।

यदि आप एक LayoutManager कोशिश उपयोग नहीं कर रहे:

 jLabel.setText ("A somewaht long message I would not want to 
stop"); 
     jLabel.setSize(jLabel.getPreferredSize()); 

अगर आप किसी लेआउट प्रबंधक का उपयोग कर रहे हैं, तो इस स्निपेट काम करना चाहिए:

 jLabel.setText ("A somewaht long message I would not want to 
stop"); 
     jLabel.validate(); 
संबंधित मुद्दे