जेलेबेल में न्यूलाइन


107

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

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

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

मेरे पास अभी यही है:

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

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

नमस्ते विश्व! ब्लाब्लहब्लह

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


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

जवाबों:


174

स्ट्रिंग को चारों ओर से घेरें <html></html>और साथ वाली रेखाओं को तोड़ें <br/>

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

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

6
@NitinBansal वास्तव में HTML के नए संस्करण में इसे <br> के रूप में छोड़ने की सिफारिश की गई है। इसे एक शून्य टैग कहा जाता है। <br /> अभी भी बैकवर्ड संगतता के लिए काम करता है।
gsingh2011

@ gsingh2011: ठीक है ... यह बेहतर है :-)
नितिन बंसल

3
किसी भी विचार क्यों JLabel डिफ़ॉल्ट रूप से newlines का समर्थन नहीं है?
अप्रोचडार्कनेसफिश

2
आपको वास्तव में html टैग बंद करने की आवश्यकता नहीं है। यदि आपको रनटाइम पर पाठ को जोड़ने की आवश्यकता है, तो यह इसे बहुत सरल करता है!
रॉबर्टो

9

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

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

ऐसा करने के फायदे हैं:

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

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

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

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



2

तुम कर सकते हो

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

और यह स्वचालित रूप से जहां उपयुक्त होगा, उसे लपेट देगा।


2

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

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


1

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

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


sigh मैंने आपके html से बचने के लिए backticks जोड़ने की कोशिश की, हालाँकि यह कहता है कि मैं संपादित नहीं कर सकता जब तक कि मैं कम से कम 6 वर्ण नहीं जोड़ रहा हूँ।
अन्ननफ़ेय

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

@ b1naryatr0phy na, समस्या तय हो गई थी :) मूल पोस्ट में एक शाब्दिक <br>टैग था जिसे पोस्ट में एक शाब्दिक लाइन ब्रेक के रूप में स्टैक-ओवरफ्लो द्वारा स्वरूपित किया गया था।
अन्नमय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.