2009-07-07 13 views
81

में न्यूलाइन मैं JLabel में एक नई लाइन कैसे प्रदर्शित कर सकता हूं?जेएलएबल

उदाहरण के लिए, अगर मैं चाहता था:

नमस्ते दुनिया!

नमस्ते विश्व blahblahblah मुझे इस करता है, तो माफ कर दो:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER); 

यह वही प्रदर्शित किया जाता है:
blahblahblah

यह है कि मैं क्या अभी है एक बेवकूफ सवाल है, मैं सिर्फ कुछ स्विंग मूल बातें सीख रहा हूं ...

+0

निश्चित रूप से एक गूंगा सवाल नहीं है। स्विंग में भी एचटीएमएल संभव था यह जानने के लिए मुझे थोड़ी देर लग गई। –

उत्तर

138

<html></html> के साथ स्ट्रिंग के आसपास और <br/> के साथ लाइनों को तोड़ दें।

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER); 
+1

बस थोड़ा सुधार: का उपयोग केवल
के बजाय करें ... यह करने का अनुशंसित तरीका है (किसी भी समापन टैग को याद न करें) ... खुश कोडिंग ... –

+5

@NitinBansal वास्तव में एचटीएमएल के नए संस्करण में इसकी अनुशंसा की जाती है इसे
के रूप में छोड़ने के लिए। इसे एक शून्य टैग कहा जाता है।
अभी भी पीछे की संगतता के लिए काम करता है। – gsingh2011

+0

@ gsingh2011: ठीक है ... यह बेहतर है :-) –

1

JLabel वास्तव में कुछ मौलिक एचटीएमएल, जिसके कारण यह (के विपरीत, कहते हैं, System.out) न्यू लाइन चरित्र के आपके उपयोग का जवाब नहीं है प्रदर्शित करने में सक्षम है।

यदि आप संबंधित HTML डालते हैं और <BR> का उपयोग करते हैं, तो आपको अपनी न्यूलाइन मिल जाएगी।

+0

* श्वास * मैंने आपके एचटीएमएल से बचने के लिए बैकटीक्स जोड़ने की कोशिश की, हालांकि यह कहता है कि मैं संपादित नहीं कर सकता जब तक कि मैं कम से कम 6 वर्ण जोड़ नहीं रहा हूं। – Annan

+1

@Annan HTML में आवश्यक नहीं है। आप किस बारे में बात कर रहे हैं एक्सएचटीएमएल का समर्थन करने के लिए है। http://stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br –

+0

@ b1naryatr0phy na, समस्या ठीक हो गई थी :) मूल पोस्ट में एक शाब्दिक '
'टैग था जो था पोस्ट में एक शाब्दिक लाइन ब्रेक के रूप में स्टैक-ओवरफ्लो द्वारा स्वरूपित। – Annan

2

आप

JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER); 

कर सकते हैं और यह अपने आप लपेट जाएगा जहां उपयुक्त हो।

2

धन्यवाद जैक मल्टीलाइन लेबल की सिफारिश के लिए आकाश। कई पंक्तियों का समर्थन करने के लिए हाल ही में जैइड के स्टाइल लेबल को भी बढ़ाया गया है। मैं इसे मल्टीलाइन लेबल पर अनुशंसा करता हूं क्योंकि इसमें कई अन्य शानदार विशेषताएं हैं। आप नीचे स्टाइललेबेल पर एक लेख देख सकते हैं। यह अभी भी मुफ़्त और खुला स्रोत है।

http://www.jidesoft.com/articles/StyledLabel.pdf

4

आप कोशिश कर सकते हैं और ऐसा करते हैं:

myLabel.setText("<html>" + myString.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("\n", "<br/>") + "</html>") 

ऐसा करने का लाभ हैं:

  • यह <br/> के साथ सभी नई-पंक्तियों की जगह, बिना असफल हो।
  • यह स्वचालित रूप से < और >&lt; और &gt; के साथ क्रमशः प्रतिस्थापित करता है, जिससे कुछ रेंडर को रोकता है।

क्या यह करता है:

  • "<html>" + शुरुआत
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;") निकल जाता < और > सुविधा के लिए
  • .replaceAll("\n", "<br/>")br (एचटीएमएल लाइन ब्रेक) द्वारा सभी नई-पंक्तियों की जगह पर एक उद्घाटन html टैग कहते हैं आप जो चाहते थे उसके लिए टैग
  • ... और + "</html>" अंत में हमारे html टैग को बंद कर देता है।

पीएस .: मुझे इतनी पुरानी पोस्ट उठाने के लिए बहुत खेद है, लेकिन जो भी हो, आपके पास जावा के लिए एक विश्वसनीय स्निपेट है!

संबंधित मुद्दे