如何在JLabel中包装文本?

时间:2016-11-25 19:33:47

标签: java swing text jlabel textwrapping

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

1 个答案:

答案 0 :(得分: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);