56

重複の可能性:
JLabel の複数行テキスト

私はこれをしたい:

JLabel myLabel = new JLabel();
myLabel.setText("This is\na multi-line string");

現在、これは表示されるラベルになります

This isa multi-line string

代わりにこれを行いたい:

This is
a multi-line string

助言がありますか?

ありがとうございました


編集:実装されたソリューション

メソッドの本体:

myLabel.setText(convertToMultiline("This is\na multi-line string"));

ヘルパー メソッド:

public static String convertToMultiline(String orig)
{
    return "<html>" + orig.replaceAll("\n", "<br>");
}
4

7 に答える 7

70

HTMLで使用できますJLabels。これを使用するには、テキストが。で始まる必要があり<html>ます。

テキストをに設定する"<html>This is<br>a multi-line string"と、機能するはずです。

詳細については、 Swingチュートリアル:JLabelおよびMultiline label(HTML)を参照してください。

于 2010-01-28T06:46:40.270 に答える
20
public class JMultilineLabel extends JTextArea{
    private static final long serialVersionUID = 1L;
    public JMultilineLabel(String text){
        super(text);
        setEditable(false);  
        setCursor(null);  
        setOpaque(false);  
        setFocusable(false);  
        setFont(UIManager.getFont("Label.font"));      
        setWrapStyleWord(true);  
        setLineWrap(true);
        //According to Mariana this might improve it
        setBorder(new EmptyBorder(5, 5, 5, 5));  
        setAlignmentY(JLabel.CENTER_ALIGNMENT);
    }
} 

私にはまったく同じように見えますが、醜いです

于 2012-06-14T13:42:02.680 に答える
7

もう 1 つの簡単な方法 (テキスト スタイルを少し変更します) は、<pre></pre>html ブロッ​​クを使用することです。

これにより、使用している文字列がユーザー入力ボックスからのものである場合、ユーザーが入力したフォーマットが保持されます。

例:

JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>"); 
于 2010-09-25T02:00:51.070 に答える
5

JLabel は html コードを受け入れることができます。<br>タグを使ってみてもいいかもしれません。

例:

JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
于 2010-01-28T06:44:24.510 に答える
5

または任意の Swing コンポーネントで html を使用する際の問題はJLabel、通常setFontsetForeground、 などではなく、html としてスタイルを設定する必要があることです。それでよろしければ、問題ありません。

それ以外の場合は、JIDE のMultilineLabelJTextAreaなどを拡張して使用できます。これは、オープン ソースのCommom Layerの一部です。

于 2010-09-25T19:30:50.827 に答える
5

jlabel に複数行のテキストを書き込む直接的な手順は次のとおりです。

JLabel label = new JLabel("<html>First Line<br>Second Line</html>"); 
于 2010-01-28T08:38:21.237 に答える
1

http://java.sun.com/docs/books/tutorial/uiswing/components/html.html

于 2010-01-28T08:36:46.913 に答える