我有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);