2016-11-25 3 views
0

動的なテキストを表示するJLabelがあります。このテキストは非常に長くても短くてもかまいません。私はテキストを折り返したいと思います。この方法で試してみます:JLabelのテキストを囲む

panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
    panel1.setMaximumSize(new Dimension(500, 150)); 
    .... 
    lblInfo=new JLabel(); 
    lblInfo.setText("<html><b>Q: "+ infoObj.getText()+"</b></html>"); 
    ... 
    panel1.add(lblInfo); 

これはうまくいかないようです。長いテキストが来ると、このJLabelは画面の外に出て(私のパネルのサイズを超えて)、私はそれを見ることができます。誰かが問題の原因を見つけ出すのを助けてくれますか?

ラベルの代わりにJTextFieldを使用して、いくつかのソリューションがstackoverflowに見つかりました。しかし、私のプロジェクトのいくつかの要件のために、私は自分のケースでJLabelを使用する必要があります。私を助けてください。長い文章になると

+1

[この回答]に見られるような幅を提案する必要がある(http://stackoverflow.com/a/7861833/418556)。 –

答えて

3

は、このJLabelのはちょうどあなたが実際のテキストで<br>を持っているときはい、テキストのみをラップする画面

の外に出ます。テキストの先頭にある<br>は何もしません。

私はJTextFieldのを使用してstackoverflowの代わりにラベル

にいくつかのソリューションは、私はそれを疑うました。 JTextField常にテキストを1行に表示します。

あなたはフォーラムで見つける提案がラッピングしてJTextAreaを使用することです:

JTextArea textArea = new JTextArea(5, 20); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
+0

* "テキストは実際のテキストに'
'がある場合にのみ折り返します。テキストの最初にある '
'は何もしません。" * 1)OPは太字でマークアップを使用しています。 。 2)ブレークは、HTMLテキストをラップする唯一の方法でもベストな方法でもありません。 (CSSの幅はより良いです) –

+0

@Andrewはい私はテキストを太字にしました。私が
をJLabelのテキストを折り返すように追加するには、動的に取得されたテキストの間に挿入する必要があります。では、もう1つの選択肢は何ですか?私はJLabelのサイズを設定しようとしました。しかし、テキストが非常に長い場合、サイズがオーバーフローして折り返されません。 – developer3

+0

*「他のオプションは何ですか?」* CSSを使用してHTMLの本文の幅を設定する。 [この回答](http://stackoverflow.com/a/14011645/418556)からリンクされている例を参照してください。 –

関連する問題