JLabelのテキストを別の行に拡張するにはどうすればよいですか?
11 に答える
HTMLをコードに入れることでそれを行うことができるので、次のようになります。
JFrame frame = new JFrame();
frame.setLayout(new GridLayout());
JLabel label = new JLabel("<html>First line<br>Second line</html>");
frame.add(label);
frame.pack();
frame.setVisible(true);
<html></html>
タグ内にコンテンツ (つまり、「テキスト」プロパティ フィールド) を入力します。したがって、<br>
またはを使用<P>
して改行を挿入できます。
例えば:
String labelContent = "<html>Twinkle, twinkle, little star,<BR>How I wonder what you are.<BR>Up above the world so high,<BR>Like a diamond in the sky.</html>";
次のように表示されます。
きらめき、きらめき、小さな星、
あなたは何なのかしら。
世界
の上空で、空に浮かぶダイアモンドのように。
SwingX ライブラリのJXLabelを使用することもできます。
JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);
これは恐ろしいです。ラベルテキストの先頭に追加することを提案するこれらすべての回答と、Java 11 (またはそれ以前) のドキュメントには、ラベルのテキストが<html>
. それがどこでも機能し、常に機能すると誰が言いますか? そして、任意のテキストをラップして HTML レイアウト エンジンに渡すと、非常に大きな驚きを得ることができます。
JTextAreaを示唆する答えに賛成しました。ただし、JTextArea は簡単な代替品ではないことに注意してください。デフォルトでは、行を埋めるように展開されますが、これは JLabel の動作ではありません。私はまだそれに対する解決策を思い付いていません。
私の場合、テキストをすべて分割してから、すべての行\n
を作成するだけで十分でしたJLabel
:
JPanel panel = new JPanel(new GridLayout(0,1));
String[] lines = message.split("\n");
for (String line : lines) {
JLabel label = new JLabel(line);
panel.add(label);
}
上記で使用しましたJOptionPane.showMessageDialog
String labelText ="<html>Name :"+name+"<br>Surname :"+surname+"<br>Gender :"+gender+"</html>";
JLabel label=new JLabel(labelText);
label.setVisible(true);
label.setBounds(10, 10,300, 100);
dialog.add(label);