我有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本身。
答案 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);