如何能像「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa」超過JLabel寬度的文本包裝? 我已經嘗試將文本附加到html標籤,但沒有運氣。 請給出您的建議。如何在JLabel中自動換行文字?
回答
一種常用的方法是不使用JLabel
,而是使用JTextArea
打開文字換行和換行。然後,您可以修飾JTextArea,使其看起來像JLabel(邊框,背景顏色等)。 [編輯,包括行包每DSquare的評論完整性]
另一種方法是在你的標籤使用HTML,爲seen here。該注意事項有
您可能必須照顧某些字符的是HTML可以解釋/從純文本轉換
調用
myLabel.getText()
現在將包含HTML(與可能 逃脫和/或轉換的字符由於#1
編輯:下面是對JTextArea方法的例子:
import javax.swing.*;
public class JLabelLongTextDemo implements Runnable
{
public static void main(String args[])
{
SwingUtilities.invokeLater(new JLabelLongTextDemo());
}
public void run()
{
JLabel label = new JLabel("Hello");
String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// String text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +
// "quick brown fox jumped over the lazy dog.";
JTextArea textArea = new JTextArea(2, 20);
textArea.setText(text);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setOpaque(false);
textArea.setEditable(false);
textArea.setFocusable(false);
textArea.setBackground(UIManager.getColor("Label.background"));
textArea.setFont(UIManager.getFont("Label.font"));
textArea.setBorder(UIManager.getBorder("Label.border"));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(label, BorderLayout.NORTH);
frame.getContentPane().add(textArea, BorderLayout.CENTER);
frame.setSize(100,200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
他特別不希望單詞包裝行爲,而是一個字符。這意味着具有'setLineWrap(true)'但'setWrapStyleWord(false)'的JTextArea可以工作。 – DSquare 2014-10-17 14:21:33
@DSquare:您對換行符是正確的。但是,使用單詞換行也是必要的,以便所有其他不再長於標籤長度的單詞(可能是其中的大部分)仍然適當地包裝。如果沒有它,他們會毫不客氣地打破標籤長度的結束,這可能是不希望的(但在OP中沒有提及)。在我的示例中將word-wrap設置爲false以查看我的意思。 – splungebob 2014-10-17 14:50:51
我同意word-wrap通常是可取的,但這不是問題。由於自動換行覆蓋了默認的字符換行行爲,因此OP不需要這種行爲。請設置「String text =」aaa ... aaa「'(不含空格,有問題的情況下),並查看您的代碼如何解決問題。 – DSquare 2014-10-17 15:06:34
- 1. 在JLabel中換行文本
- 2. 如何從文本框自動更新字符串(在JLabel中)?
- 3. JTextPane - 自動換行插入JLabel組件
- 4. 如何自動更改Jlabel
- 5. 如何使用HTML在HTML中自動換行文字?
- 6. 如何在註釋字幕中自動換行文本
- 7. JLabel中的換行
- 8. 如何在Emacs中自動換行?
- 9. 如何格式化的JLabel/JTextField中所以文本換行
- 10. 中國文字如何自動在<Text>中自動切換?
- 11. 自動增加JLabel
- 12. 自動縮寫JLabel
- 13. 在.net文本框中自動換行
- 14. JLabel字符串換行無空格
- 15. JLabel擴展但不是字換行
- 16. 如何自動換行QTreeWidgetItem
- 17. 如何自定義JLabel縮寫文本
- 18. 如何在寬屏圖像文本中應用自動換行?
- 19. 如何在正常的html文本框中自動換行?
- 20. 如何在崇高文本的控制檯中自動換行?
- 21. 如何強制寬度自動錶上的文字換行?
- 22. 如何在NetBeans中手動添加jlabel到jlabel數組?
- 23. 如何在多行中跨越JLabel?
- 24. 如何在JLabel中製作另一行
- 25. 自動換行字符
- 26. 如何在JLabel/JTextField中顯示(從左側換行)文件路徑?
- 27. 如何在JLabel中顯示新文本
- 28. 如何用jlabel創建運行文本?
- 29. 自動換行:打破字在IE8
- 30. 做自動換行:打破字在Vaadin
可能重複未能提供解決方案時的單詞中有沒有空格字符。我的意思是,當只有一個單詞超過jlabel的寬度時,在這種情況下應該做什麼? – Nadeem 2014-10-17 08:09:03