Многострочный текст в JLabel
Как я могу сделать текст JLabel расширить на другую строку?
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.