Java JLabel扩展但不换行
我有一个用于显示错误消息的JLabel对象,如以下代码所示。据我所知,如果消息嵌入到html标记中,那么标签应该是自动换行的。然而,在我的例子中,标签似乎是水平扩展的。有人能告诉我什么是我做得不对的吗?或者,有没有更好的方法来显示较长的错误消息 代码如下: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));
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元素设置宽度。