2009-07-07 35 views
81

如何在JLabel中顯示換行符?JLabel中的換行

例如,如果我想:

的Hello World!
blahblahblah

這就是我現在所擁有的:

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

這是顯示的內容:

的Hello World blahblahblah

如果原諒我是一個愚蠢的問題,我只是在學習一些Swing基礎知識......

+0

絕對不是一個愚蠢的問題。花了我一段時間來弄清楚html也是可能的。 – 2017-03-16 07:51:20

回答

138

圍繞字符串<html></html>並打破<br/>

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

只是一個小小的更正:使用
而不是僅僅
...這是做這件事的推薦方式(不要錯過任何結束標籤)...開心編碼... – 2012-04-18 05:50:00

+5

@NitinBansal其實它推薦在新版本的HTML將其保留爲
。它被稱爲無效標籤。
仍然適用於向後兼容性。 – gsingh2011 2012-04-27 03:50:23

1

的JLabel實際上是能夠顯示一些基本的HTML,這就是爲什麼它不響應您使用換行符(不像,說下,System.out)的。

如果你把相應的HTML和使用<BR>,你會得到你的換行符。

2

你可以做

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

,並在適當情況下它會自動將它包裝。

2

感謝Aakash推薦JIDE MultilineLabel。 JIDE的StyledLabel最近也被增強以支持多行。我會推薦它通過MultilineLabel,因爲它有許多其他的強大功能。您可以在下面查看StyledLabel上的文章。它仍然是免費且開源的。

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>"最後關閉我們的html標籤。

P.S .:非常抱歉喚醒這樣一箇舊帖子,但無論如何,您的Java有一個可靠的片段!