2016-11-25 80 views
0

我有顯示動態文本的JLabel。這段文字可能很長或很短。我想包裝文本,我試圖這樣:在JLabel中換行文本

panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
    panel1.setMaximumSize(new Dimension(500, 150)); 
    .... 
    lblInfo=new JLabel(); 
    lblInfo.setText("<html><b>Q: "+ infoObj.getText()+"</b></html>"); 
    ... 
    panel1.add(lblInfo); 

但這似乎並不奏效。當長文本出現時,JLabel會跳出屏幕(超出面板的大小),我只能看到它的結尾。有人能幫我弄清楚是什麼問題?

我發現了一些使用JTextField而不是標籤的stackoverflow解決方案。但由於我的項目有一些要求,我必須在我的情況下使用JLabel。請幫助我。

+1

有必要提出一個寬度爲[這個答案]看到(http://stackoverflow.com/a /418556分之7861833)。 –

回答

3

當長短信來了,此JLabel剛剛走出屏幕

的是,當你有實際的文本<br>文本將只換行。文本開頭的<br>什麼都不做。

我發現了一些計算器使用的解決方案,而不是標籤

我懷疑了JTextField。 A JTextField總是在一行上顯示文字。

您將在論壇上找到的建議是使用一個JTextArea與包裝:

JTextArea textArea = new JTextArea(5, 20); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
+0

*「文本只會在實際文本中包含'
'後纔會換行,文本開頭的'
'不會執行任何操作。」* 1)OP將標記用於粗體而不是中斷。 2)打破既不是唯一的,也不是最好的方式來包裝HTML文本。 (CSS寬度更好。) –

+0

@Andrew是的,我把文字加粗。如果我要添加
來包裝JLabel中的文本,我必須在我動態獲取的文本之間執行此操作。那麼其他選擇是什麼?我試着設置JLabel的大小。但是,當文本很長時,它只是溢出大小,不包裝。 – developer3

+0

*「那麼其他選項是什麼?」*使用CSS設置HTML主體的寬度。查看從[此答案](http://stackoverflow.com/a/14011645/418556)鏈接的示例。 –