如何在JLabel中包装文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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就会离开屏幕(超出我面板的大小),我只能看到它的结尾。

我在Stack Overflow上使用JTextField而不是label找到了一些解决方案。但由于我项目中的一些要求,我必须在我的案例中使用JLabel本身。

答案

当一个长文本出现时,这个JLabel就会离开屏幕

是的,只有在实际文本中有<br>时,文本才会换行。文本开头的<br>什么也没做。

我在使用JTextField而不是label的stackoverflow上找到了一些解决方案

我不信。 JTextField总是在一行显示文本。

您将在论坛中找到的建议是使用包装的JTextArea

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

以上是关于如何在JLabel中包装文本?的主要内容,如果未能解决你的问题,请参考以下文章

在代码片段中包含类型转换

如何在标签中包装不是标签的一部分的文本?

如何在php中包装没有空格的长文本[重复]

如何使 JLabel 中的文本居中?

Intellij:如何在 Javadoc 中包装一段文本?

如何更新JLabel文本?