JLabel扩展但不包装文字

时间:2012-01-11 20:31:57

标签: java html swing jlabel boxlayout

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

}

3 个答案:

答案 0 :(得分:3)

您可以尝试在开源JIDE Common Layer中提供StyledLabel。它支持您希望JLabel可以执行的许多其他功能中的换行。

答案 1 :(得分:1)

标签需要有最大宽度才能包裹。 尝试设置最大宽度或将文本包装在带有width属性的div标签中。

答案 2 :(得分:0)

BorderLayoutpanelErrMsg一起使用,并将标签置于“北”位置。