如何在JLabel中包装文本?

问题描述 投票:0回答:1

我有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本身。

java swing text jlabel textwrapping
1个回答
3
投票

当一个长文本出现时,这个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);
© www.soinside.com 2019 - 2024. All rights reserved.