2009-07-07 10 views
81

JLabel'da yeni satırı nasıl görüntüleyebilirim?JLabel'de Yeni Çizgi

Örneğin, ben isteseydi:

Merhaba Dünya!

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

Bu görüntülenir budur:!

Merhaba Dünya blahblahblah

bu beni affedin
blahblahblah

Bu şu anda ne var aptal bir soru, ben sadece bazı Swing temellerini öğreniyorum ...

+0

Kesinlikle aptalca bir soru değil. Bir süreliğine html'nin de salıncakta mümkün olduğunu anlamaya çalıştım. –

cevap

138

Dizeyi <html></html> ile çevreleyin ve çizgileri <br/> ile kesin.

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

sadece küçük bir düzeltme: sadece
yerine
kullanın ... bunu yapmanın bir yolu (kapanış etiketlerini kaçırmamak için) ... mutlu kodlama ... –

+5

@NitinBansal Aslında HTML'nin yeni sürümünde önerilir
olarak bırakmak. Buna void etiketi denir.
hala geriye dönük uyumluluk için çalışıyor. – gsingh2011

+0

@ gsingh2011: tamam ... daha iyi :-) –

1

JLabel o (System.out, diyelim ki, aksine) yeni satır karakteri kullanımınız yanıt vermiyor yüzden bazı ilkel HTML, görüntüleme aslında yeteneğine sahiptir.

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

+0

* sigh * html'den kaçmak için backticks eklemeyi denedim, ancak en az 6 karakter eklediğim sürece düzenleme yapamayacağımı söylüyor. – Annan

+1

@Annan Bu, HTML'de gerekli değildir. Bahsettiğiniz şey, XHTML'yi desteklemek içindir. http://stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br –

+0

@ b1naryatr0phy na, sorun giderildi :) Asıl gönderi bir '
' etiketi vardı Gönderide bir satır sonu akışı olarak yığın-taşmasıyla biçimlendirilmiş. – Annan

2

Sen

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

yapabilir ve uygun durumlarda otomatik olarak kaydırılır.

2

JIDE MultilineLabel'i önerdiği için teşekkür ederiz. JIDE'ın StyledLabel'i aynı zamanda çoklu hattı desteklemek için son zamanlarda geliştirilmiştir. Çok diğer harika özelliklere sahip olduğu için MultilineLabel üzerinden tavsiye ederim. StyledLabel ile ilgili bir makaleyi aşağıdan inceleyebilirsiniz. Hala özgür ve açık kaynak.

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

4

denemek ve bunu yapabilirsiniz: Bunu yapmanın

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

avantajları şunlardır:

  • Başarısız olmadan <br/> ile tüm yeni satırı.
  • Olası olarak, bazılarının zarar görmesini önleyen, sırasıyla &lt; ve &gt; ile < ve > ile değiştirir.

Ne yapar:

  • "<html>" +
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")
  • .replaceAll("\n", "<br/>")br (HTML satır sonu) bütün yeni satırı kolaylık < ve > kaçar başında bir açılış html etiketi ekler İstediğiniz şey için etiketler
  • ... ve + "</html>", sonunda html etiketimizi kapatır.

Not: Böyle eski bir yazıyı uyandırdığım için çok üzgünüm, ama her neyse, Java'nız için güvenilir bir snippet'iniz var!