web-dev-qa-db-ja.com

Java swing:複数行ラベル?

可能性のある複製:
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>");
}
50
bguiz

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

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

Swing Tutorial:JLabel および Multiline label(HTML) を参照してください。

62
Peter Lang
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);
    }
} 

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

13
Whimusical

別の簡単な方法(ただし、テキストのスタイルを少し変更します)は、<pre></pre> htmlブロック。

これは、使用している文字列がユーザー入力ボックスからのものである場合、ユーザーが入力した書式を保持します。

例:

JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>"); 
6
Austyn Mahoney

JLabelまたはSwingコンポーネントでhtmlを使用する場合の問題は、通常のsetFontsetForegroundなどではなく、htmlとしてスタイル設定する必要があることです。大丈夫、大丈夫。

それ以外の場合は、JIDEの MultilineLabel のようなものを使用できます。これはJTextAreaを拡張します。それは彼らのオープンソースの一部です Commom Layer

5
Geoffrey Zheng

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

JLabel label = new JLabel("<html>First Line<br>Second Line</html>"); 
5
Marco Schmid

JLabelはhtmlコードを受け入れることができます。たぶん、<br>タグ。

例:

JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
3
KWAN TOH CHOONG
3