質問

可能な重複:
複数行テキスト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>");
}
役に立ちましたか?

解決

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

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

を参照してください。チュートリアルスイング:JLabelのマルチラインラベル(HTML)の。

他のヒント

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);
    }
} 

これは完全に私のために同じに見えますが、その醜い

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

これは、任意の使用している文字列は、ユーザの入力ボックスから来た場合に、ユーザーが入力します。

の書式設定を保持します

例:

JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>"); 
JLabelの中で複数行のテキストを書くの直接的な手順があります:

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

JLabelまたは任意のSwingコンポーネントにHTMLを使用しての問題はあなただということでOK、細かいます。

場合は、その後、HTMLとして、ないなど通常のsetFontsetForeground、とスタイルにそれを持っているということです

そうしないと、JIDEから MultilineLabel のようなものを使用することができ、これJTextAreaを拡張します。彼らのオープンソースのそれの一部 Commomレイヤでます。

JLabelのHTMLコードを受け入れることができます。たぶん、あなたは<br>タグを使用しようとすることができます。

例:

JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top