Java JLabel扩展但不换行

Java JLabel扩展但不换行,java,html,swing,jlabel,boxlayout,Java,Html,Swing,Jlabel,Boxlayout,我有一个用于显示错误消息的JLabel对象,如以下代码所示。据我所知,如果消息嵌入到html标记中,那么标签应该是自动换行的。然而,在我的例子中,标签似乎是水平扩展的。有人能告诉我什么是我做得不对的吗?或者,有没有更好的方法来显示较长的错误消息 代码如下: public class MyPanel extends JPanel { public MyPanel() { this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

我有一个用于显示错误消息的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);
  }

}
公共类MyPanel扩展了JPanel{
公共事务委员会(){
this.setLayout(新的BoxLayout(this,BoxLayout.Y_轴));
//内部有几个JPanel对象
//显示错误消息的最后一个JPanel
JPanel panelErrMsg=newjpanel(newflowlayout(FlowLayout.LEFT));
这个._lblError=new JLabel();
这个.u lblError.setboorder(BorderFactory.createEmptyByOrder(20,10,10,10));
此.\u lblError.setForeground(颜色.红色);
此.u lbleror.setFont(新字体(“Courier new”,Font.BOLD,12));
panelErrMsg.add(此._lblError);
添加(panelErrMsg);
}
私有void DisplayMessage(字符串消息){
字符串newMessage=“+msg+”;
此._lblError.setText(newMessage);
}
}

标签需要有最大宽度才能包装。
尝试设置最大宽度或使用宽度属性包装div标记中的文本。

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

您可以在开源JIDE公共层中尝试StyledLabel。它支持换行以及其他许多您希望JLabel能够实现的功能。

您可以在开源JIDE公共层中尝试StyledLabel。它支持换行功能以及其他许多您希望JLabel可以实现的功能。

边框布局
panelErrMsg
一起使用,并将标签放置在北方位置。

边框布局
panelErrMsg
一起使用,并将标签放置在北方位置。

尝试使用
JTextPane
setEditable(false)
相反,不可编辑的JTextArea比JTextPane更容易。这是我的建议。另外,这句话:“据我所知,如果消息嵌入html标记中,标签应该是自动换行的”,这是不正确的。在玩了一点之后,我注意到标签周围的面板导致标签不自动换行。如果我拆下面板,它会缠绕。但是,文本从窗口的中间开始,而不是从左侧开始。setAlignmentX与LEFT_对齐没有区别。看起来您建议使用JTextArea更好。它具有自动换行特性。作为奖励,您可以复制/粘贴错误消息。谢谢。尝试将
JTextPane
setEditable(false)
一起使用?不可编辑的JTextPane比JTextPane容易。这是我的建议。另外,这句话:“据我所知,如果消息嵌入html标记中,标签应该是自动换行的”,这是不正确的。在玩了一点之后,我注意到标签周围的面板导致标签不自动换行。如果我拆下面板,它会缠绕。但是,文本从窗口的中间开始,而不是从左侧开始。setAlignmentX与LEFT_对齐没有区别。看起来您建议使用JTextArea更好。它具有自动换行特性。作为奖励,您可以复制/粘贴错误消息。谢谢。“或者将文本包装在带有宽度属性的div标记中。”我通常会为body元素设置宽度。“或者将文本包装在带有宽度属性的div标记中。”我通常会为body元素设置宽度。