JLabel'de yeni satır


107

İçinde yeni satırı nasıl görüntüleyebilirim JLabel?

Örneğin, istersem:

Selam Dünya!
blahblahblah

Şu anda sahip olduğum şey bu:

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

Şu görüntüleniyor:

Merhaba Dünya! Blahblahblah

Bu aptalca bir soru ise beni affet, sadece Swing'in temellerini öğreniyorum ...


1
Kesinlikle aptalca bir soru değil. Hızla html'nin de mümkün olduğunu anlamam biraz zaman aldı.
Simon Baars

Yanıtlar:


174

Dizeyi çevreleyin <html></html>ve satırları ile bölün <br/>.

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

3
sadece küçük bir düzeltme: sadece <br> yerine <br /> kullanın ... bunu yapmanın önerilen yolu (kapanış etiketlerini kaçırmamak için) ... mutlu kodlamalar ...
Nitin Bansal

6
@NitinBansal Aslında HTML'nin yeni sürümünde onu <br> olarak bırakmanız önerilir. Buna boşluk etiketi denir. <br /> hala geriye dönük uyumluluk için çalışıyor.
gsingh2011

@ gsingh2011: tamam ... bu daha iyi :-)
Nitin Bansal

3
NEDEN JLabel'in yeni satırları varsayılan olarak desteklemediğine dair bir fikriniz var mı?
ApproachingDarknessFish

2
Aslında html etiketini kapatmanıza bile gerek yok. Çalışma zamanında metin eklemeniz gerekiyorsa, bu onu çok basitleştirir!
Roberto

10

Bunu deneyebilir ve yapabilirsiniz:

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

Bunu yapmanın avantajları:

  • Hatasız olarak tüm yeni satırları ile değiştirir <br/>.
  • Otomatik olarak nihai değiştirir <ve >ile &lt;ve &gt;bazı tahribat hale önlenmesi, sırasıyla.

Ne yaptığı:

  • "<html>" +htmlbaşlangıca bir açılış etiketi ekler
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")kaçar <ve >rahatlık için
  • .replaceAll("\n", "<br/>")bristediğiniz şey için tüm yeni satırları (HTML satır sonu) etiketleriyle değiştirir
  • ... ve sonunda + "</html>"etiketimizi kapatır html.

Not: Bu kadar eski bir gönderiyi uyandırdığım için çok üzgünüm ama her neyse, Java'nız için güvenilir bir pasajınız var!



2

Yapabilirsin

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

ve uygun olduğu yerde otomatik olarak saracaktır.


2

JIDE MultilineLabel'i önerdiği için teşekkürler Aakash. JIDE'nin StyledLabel'ı da son zamanlarda çoklu hattı desteklemek için geliştirildi. Diğer birçok harika özelliğe sahip olduğu için bunu MultilineLabel üzerinden tavsiye ederim. Aşağıdaki StyledLabel ile ilgili bir makaleye göz atabilirsiniz. Hala ücretsiz ve açık kaynak.

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


1

JLabel aslında bazı temel HTML gösterme yeteneğine sahiptir, bu nedenle yeni satır karakterini kullanımınıza yanıt vermez (örneğin, System.out'un aksine).

İlgili HTML'yi girip kullandıysanız <BR>, yeni satırlarınızı alırsınız.


sigh html'nizden kaçmak için ters işaretler eklemeye çalıştım, ancak en az 6 karakter eklemediğim sürece düzenleyemeyeceğimi söylüyor.
AnnanFay

1
@Annan HTML'de buna gerek yoktur. Bahsettiğiniz şey XHTML'yi desteklemek için. stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br
b1nary.atr0phy

@ b1naryatr0phy na, sorun çözüldü :) Orijinal gönderide, yazıdaki <br>satır sonu olarak yığın taşması ile biçimlendirilmiş gerçek bir etiket vardı .
AnnanFay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.