web-dev-qa-db-fra.com

Texte multiligne dans JLabel

Comment faire pour que le texte d'un JLabel s'étende sur une autre ligne?

69
Jessy

Vous pouvez le faire en mettant HTML dans le code, donc:

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

si vous voulez que votre jLabel Text se redimensionne automatiquement, par exemple dans une grille extensible, il suffit de mettre son texte dans des balises HTML comme suit

JLabel label = new JLabel("<html>First line and maybe second line</html>");
15
tObi

Tapez le contenu (c'est-à-dire le champ de propriété "text") dans une balise <html></html>. Vous pouvez donc utiliser <br> ou<P> pour insérer une nouvelle ligne.

Par exemple:

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

Il s'affichera comme suit:

Scintille, scintille, petite étoile,
Comment je me demande ce que vous êtes.
Au-dessus du monde si haut,
Comme un diamant dans le ciel.

7
Web Think

Vous pouvez également utiliser un JXLabel from la bibliothèque SwingX .

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

J'ai utilisé JTextArea pour JLabels multilignes.

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

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

2
Seseel Lybon

Dans mon cas, il suffisait de scinder le texte à chaque \n, puis de créer une JLabel pour chaque ligne:

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

J'ai utilisé ci-dessus dans un JOptionPane.showMessageDialog

1
Dediqated
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);
0
Harun ERGUL

Il est possible de utiliser CSS (/ de base) dans le code HTML.


Cette question était liée à Multiline JLabels - Java .

0
Andrew Thompson