2012-01-11 7 views
1

次のコードに示すように、エラーメッセージを表示するJLabelオブジェクトがあります。私が理解しているように、メッセージがhtmlタグ内に埋め込まれている場合、ラベルは単語ラップになっています。しかし、私の場合、ラベルは横に広がっているようです。誰かが私に正しいことをしていないことを教えてもらえますか?または、長いエラーメッセージを表示するより良い方法はありますか?JLabelはワープロ展開ではありません。

ここでは、コードです:

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

代わりに 'setEditable(false)'で 'JTextPane'を使ってみてください。 – Sheriff

+1

編集不可能なJTextAreaはJTextPaneよりも簡単です。それが私がお勧めするものです。また、これは: "私が理解するように、メッセージがhtmlタグの中に埋め込まれていれば、ラベルは単語ラップになっているはずですが、正しくありません。 –

+0

ちょっと遊んだ後、私が気づいたのは、ラベルの周りのパネルがラベルを折り返さないようにすることです。パネルを取り外すと折り返します。ただし、テキストはウィンドウの中央から始まり、残されません。 LEFT_ALIGNMENTのsetAlignmentXは違いはありません。 – Peter

答えて

1

ラベルはそれがラップするための最大の幅を持っている必要がありますが。 divタグのテキストをwidth属性でラップするか、最大幅を設定してみてください。

+0

* "またはdivタグのテキストをwidth属性で折り返します。" *通常、body要素に幅を設定します。 –

3

あなたは、オープンソースのJIDE Common LayerにStyledLabelを与えることができます。 JLabelができるようにしたい他の多くの機能の間で行の折り返しをサポートしています。

+0

ようこそStackOverflowへ:) –

0

BorderLayoutpanelErrMsgとし、ラベルをNORTH位置にします。

関連する問題