سؤال

كيف يمكنني عرض جديد في JLabel?

على سبيل المثال، إذا أردت:

مرحبا بالعالم!
الخ الخ الخ

هذا هو ما لدي الآن:

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

هذا هو ما يتم عرضه:

مرحبا العالم! blahblahblah

سامحني إذا كان هذا سؤالا غبيا، أنا فقط أتعلم بعض أساسيات التأرجح ...

هل كانت مفيدة؟

المحلول

تحيط بالسلسلة مع <html></html> وكسر الخطوط مع <br/>.

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

نصائح أخرى

يمكنك محاولة القيام بذلك:

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 علامة في النهاية.

ملاحظة: أنا آسف جدا لاستيقاظ مثل هذا المنصب القديم، ولكن أيا كان، لديك مقتطف موثوق لجافا الخاص بك!

يمكنك استخدام مكون Multilinelabel في مكونات المصدر المفتوح Jide Jide.

http://www.jidesoft.com/products/oss.htm.

يمكنك ان تفعل

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

وسوف تغلبها تلقائيا عند الاقتضاء.

شكرا akash للتوصية بنك جايدي multilinelabel. يتم تعزيز Jide's Styledlabel مؤخرا لدعم خط متعدد. أوصي به أكثر من Multilinelabel لأنه يحتوي على العديد من الميزات الرائعة الأخرى. يمكنك التحقق من مقال على Styledlabel أدناه. لا يزال خاليا ومصدر مفتوح.

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

Jlabel قادر في الواقع على عرض بعض HTML البدائي، وهذا هو السبب في أنه لا يستجيب لاستخدامك لشخصية نيولين (على عكس، على سبيل المثال، system.out).

إذا وضعت في HTML المقابلة وتستخدم <BR>, ، سوف تحصل على خطوط نيوز الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top