我有一个JLabel对象用于显示错误消息,如以下代码所示。据我所知,如果消息嵌入在html标签中,标签应该是自动换行。但是,在我的情况下,标签似乎水平扩展。有人可以告诉我,我做得对吗?或者,是否有更好的方法来显示长错误消息?
以下是代码:
public class MyPanel extends JPanel {
public MyPanel() {
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
// Several JPanel objects inside
// The last JPanel to show error messages
JPanel panelErrMsg = new JPanel(new FlowLayout(FlowLayout.LEFT));
this._lblError = new JLabel();
this._lblError.setBorder(BorderFactory.createEmptyBorder(20, 10, 10, 10));
this._lblError.setForeground(Color.RED);
this._lblError.setFont(new Font("Courier New", Font.BOLD, 12));
panelErrMsg.add(this._lblError);
this.add(panelErrMsg);
}
private void DisplayMessage(String msg) {
String newMessage = "<html><body>" + msg + "</body></html>";
this._lblError.setText(newMessage);
}
}
答案 0 :(得分:3)
您可以尝试在开源JIDE Common Layer中提供StyledLabel。它支持您希望JLabel可以执行的许多其他功能中的换行。
答案 1 :(得分:1)
标签需要有最大宽度才能包裹。 尝试设置最大宽度或将文本包装在带有width属性的div标签中。
答案 2 :(得分:0)
将BorderLayout
与panelErrMsg
一起使用,并将标签置于“北”位置。