2012-06-14 16 views
5

के बिना एक बहुभाषी जेएलएबल (या एक जेटीक्स्टएरिया पूरी तरह से दिख रहा है) कैसे प्राप्त नहीं किया जा सकता है मैं मानता हूं कि एक बहुभाषी जेएलएबल के लिए सबसे तेज़ समाधान निम्न है (टेक्स्ट एक var से आता है, और इसलिए मैं मैन्युअल रूप से HTML कोड नहीं रखना चाहता प्रत्येक एक्स वर्ण, इसकी बदसूरत):एचटीएमएल

public class JMultilineLabel extends JTextArea{ 
    private static final long serialVersionUID = 1L; 
    public JMultilineLabel(String text){ 
     super(text); 
     setEditable(false); 
     setCursor(null); 
     setOpaque(false); 
     setFocusable(false); 
     setFont(UIManager.getFont("Label.font"));  
     setWrapStyleWord(true); 
     setLineWrap(true); 
    } 
} 

... यकीन है कि यह इसे संभालने का एक बेहतर तरीका नहीं है ????

+0

क्यों हैं आपने 'JTextArea' को गैर-संपादन योग्य पर सेट किया है, इस तरह आप 'JTextField' की बजाय 'JLabel' के बराबर कुछ और प्राप्त करेंगे जो पूरे Poi एनटी संपादन योग्य होना है :) या शायद आप वास्तव में एक multiline 'JLabel' के बाद हैं? – Boro

+0

वाह क्षमा करें, मैं कहना चाहता था कि जेलाबेल दुःख मैंने बदल दिया, मैं क्या सोच रहा था? – Whimusical

+0

लेकिन मुझे पता है कि अगर इसके लिए कोई जवाब है तो मुझे फिर से देखना चाहिए, इसलिए शायद इसके डुप्लिकेट किए गए सुझावों के बाद (संदेह) मेरे संदेह – Whimusical

उत्तर

3

यदि आप एक मल्टीलीन लेबल चाहते हैं तो आप इसके उपयोग में HTML का उपयोग अपने टेक्स्ट में करते हैं, क्योंकि वे इसका उपयोग करते हैं। इसलिए, रेखा ब्रेक करने के लिए लाइन ब्रेक टैग </br> का उपयोग करें या <p></p> अनुच्छेद टैग में अलग-अलग पंक्तियां डालें।

यह चिह्नित करना न भूलें कि आप <html> टैग के साथ अपना टेक्स्ट प्रारंभ करके JLabel के लिए HTML का उपयोग करना चाहते हैं।

More available here.

BTW मैं जाँच करने के लिए भूल गया अगर वहाँ JLabel उपयोग के बारे में अन्य संबंधित सवाल थे और कम से कम कुछ वहाँ थे, जाँच this या this। :)


संपादित करें:

एक काम कर नमूने के लिए, एक अलग दृष्टिकोण दिखा रहा है, एक शैली और पैरा और लेबल उपलब्ध स्थान लेने के उपयोग के साथ की स्थापना के बिना, कृपया नीचे देखें:

import java.awt.BorderLayout; 
import java.awt.Color; 
import javax.swing.*; 

public class LabelHTMLAutoResize { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       JFrame f = new JFrame(); 
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       JPanel p = new JPanel(new BorderLayout()); 
       JLabel l = new JLabel("<html><p> Some verrrry long text Some verrrry long Some verrrry long text dsa ads oiosi o</p>"); 
       l.setVerticalAlignment(SwingConstants.TOP); 
       l.setOpaque(true); 
       l.setBackground(Color.green); 
       p.add(l); 
       f.setContentPane(p); 
       /* good practice is to use f.pack(); and let the size be automatically calculated but we want to show line wrapping thus frame size is set */ 
       f.setSize(200, 200); 
       f.setVisible(true); 
      } 
     }); 
    } 
} 
3

मैं अपने आप linewrapping, और आने वाली स्ट्रिंग पार्स करने में नहीं होने बनाने के लिए और एक <BR> हर एक्स वर्ण

01 लगाने की जरूरत है

शरीर की चौड़ाई (एचटीएमएल) सेट करें। स्विंग एचटीएमएल समर्थन में मूल शैलियों शामिल हैं।

मैं एक JLabel चारों ओर झूठ बोल रही है अतः कहीं की चौड़ाई सीमित करने के लिए सीएसएस का उपयोग कर के कुछ उदाहरण ..


आह हाँ, there it is था:

import javax.swing.*; 

class FixedWidthLabel { 

    public static void main(String[] srgs) { 
     String s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu nulla urna. Donec sit amet risus nisl, a porta enim. Quisque luctus, ligula eu scelerisque gravida, tellus quam vestibulum urna, ut aliquet sapien purus sed erat. Pellentesque consequat vehicula magna, eu aliquam magna interdum porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sollicitudin sapien non leo tempus lobortis. Morbi semper auctor ipsum, a semper quam elementum a. Aliquam eget sem metus."; 
     String html1 = "<html><body style='width: "; 
     String html2 = "px'>"; 

     JOptionPane.showMessageDialog(null, new JLabel(html1+"200"+html2+s)); 
     JOptionPane.showMessageDialog(null, new JLabel(html1+"300"+html2+s)); 
    } 
} 

+0

अगर आप से बचना चाहते हैं तो संपादन भी देखें (बुराई) '
'। –

+0

+1 अच्छा एक मैं सोच रहा था कि टेक्स्ट आकार को सीमित कैसे करें। थोड़ी देर बाद मैंने एक अलग दृष्टिकोण चुना (मेरे ** संपादित ** में प्रस्तुत)। – Boro

+0

@ बोरो * "थोड़ी देर बाद मैंने एक अलग दृष्टिकोण चुना" * क्या आपने टूल-टिप में उस दृष्टिकोण का परीक्षण किया है? –