JLabelのテキストを別の行に拡張するにはどうすればよいですか?
コードに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);
たとえば、jLabel Textのサイズを伸縮可能なgridbaglayoutで自動的に変更する場合は、次のようにHTMLタグにテキストを入れるだけで十分です。
JLabel label = new JLabel("<html>First line and maybe second line</html>");
<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>";
次のように表示されます。
キラキラ光る、
あなたは何だと思いますか。
非常に高い世界の上
空のダイヤモンドのように。
複数行のJLabelsにJTextAreaを使用しました。
JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");
http://docs.Oracle.com/javase/7/docs/api/javax/swing/JTextArea.html
SwingXライブラリ から JXLabel を使用することもできます。
JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);
私の場合、\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);