可能性のある複製:
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>");
}
HTML
でJLabels
を使用できます。それを使用するには、テキストは<html>
で始まる必要があります。
テキストを"<html>This is<br>a multi-line string"
に設定すると、動作するはずです。
Swing Tutorial:JLabel および Multiline label(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);
}
}
私にはまったく同じように見えますが、butいです
別の簡単な方法(ただし、テキストのスタイルを少し変更します)は、<pre></pre>
htmlブロック。
これは、使用している文字列がユーザー入力ボックスからのものである場合、ユーザーが入力した書式を保持します。
例:
JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>");
JLabel
またはSwingコンポーネントでhtmlを使用する場合の問題は、通常のsetFont
、setForeground
などではなく、htmlとしてスタイル設定する必要があることです。大丈夫、大丈夫。
それ以外の場合は、JIDEの MultilineLabel のようなものを使用できます。これはJTextArea
を拡張します。それは彼らのオープンソースの一部です Commom Layer 。
Jlabelに複数行のテキストを書き込む直接的な手順は次のとおりです。
JLabel label = new JLabel("<html>First Line<br>Second Line</html>");
JLabelはhtmlコードを受け入れることができます。たぶん、<br>
タグ。
例:
JLabel myLabel = new JLabel();
myLabel.setText("<html> This is a <br> multi-line string </html>");