Многострочный текст в JLabel


Как я могу сделать текст JLabel расширить на другую строку?

9 68

9 ответов:

вы можете сделать это, поместив 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 автоматически изменялся, например, в растягиваемом 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>";

Он будет отображаться следующим образом:

Мерцай, мерцай, звездочка,
Как же мне интересно, кто ты такой.
Над миром так высоко,
Как алмаз в небе.

вы также можете использовать JXLabel С библиотека SwingX.

JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);

я использовал JTextArea для многострочных JLabels.

JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");

http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextArea.html

в моем случае достаточно было разбить текст на каждый \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

можно use (basic) CSS в HTML.


этот вопрос был связан с Многострочные JLabels-Java.

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

Почему вы даете сложные вещи...вы можете просто сделать это, поставив "\n " вместо html-тегов