JLabel расширяется, но не переносит слова - PullRequest
1 голос
/ 12 января 2012

У меня есть объект 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 ]

3 голосов
/ 12 января 2012

Вы можете попробовать StyledLabel в JIDE Common Layer с открытым исходным кодом. Он поддерживает перенос строк среди многих других функций, которые вы бы хотели, чтобы JLabel мог делать.

1 голос
/ 12 января 2012

Для надписи этикетка должна иметь максимальную ширину.Попробуйте установить максимальную ширину или обернуть текст в тег div с атрибутом width.

0 голосов
/ 14 марта 2012

Используйте BorderLayout с panelErrMsg и поместите этикетку в СЕВЕРНОЕ положение.

...