57 votes

Java swing: des étiquettes multilignes?

Double Possible:
Texte multiligne dans JLabel

Je veux faire ceci:

JLabel myLabel = new JLabel();
myLabel.setText("This is\na multi-line string");

Actuellement, il en résulte une étiquette qui s'affiche

This isa multi-line string

Je veux faire ceci à la place:

This is
a multi-line string

Toutes les suggestions?

Merci


EDIT: la solution mise en œuvre

Dans le corps de la méthode:

myLabel.setText(convertToMultiline("This is\na multi-line string"));

Méthode d'assistance:

public static String convertToMultiline(String orig)
{
    return "<html>" + orig.replaceAll("\n", "<br>");
}

73voto

Peter Lang Points 25877

Vous pouvez utiliser HTML en JLabels . Pour l'utiliser, votre texte doit commencer par <html> .

Définissez votre texte sur "<html>This is<br>a multi-line string" et cela devrait fonctionner.

Voir Swing Tutorial: JLabel et Multiline label (HTML) pour plus d'informations.

22voto

user1352530 Points 987
 public class JMultilineLabel extends JTextArea{
    private static final long serialVersionUID = 1L;
    public JMultilineLabel(String text){
        super(text);
        setEditable(false);  
        setCursor(null);  
        setOpaque(false);  
        setFocusable(false);  
        setFont(UIManager.getFont("Label.font"));      
        setWrapStyleWord(true);  
        setLineWrap(true);
    }
} 
 

C'est totalement pareil pour moi, mais c'est moche

7voto

Austyn Mahoney Points 4252

Un autre moyen simple (mais modifie légèrement le style du texte) consiste à utiliser un bloc <pre></pre> html.

Cela conservera toute la mise en forme saisie par l'utilisateur si la chaîne que vous utilisez provient d'une zone de saisie utilisateur.

Exemple:

 JLabel label = new JLabel("<html><pre>First Line\nSecond Line</pre></html>"); 
 

5voto

Marco Schmid Points 179

La procédure directe pour écrire un texte multiligne dans un jlabel est la suivante:

 JLabel label = new JLabel("<html>First Line<br>Second Line</html>"); 
 

5voto

Geoffrey Zheng Points 3503

Le problème avec l'aide de html en JLabel ou de tout composant Swing est que vous aurez ensuite à un style en html, pas avec l'habituel setFont, setForeground, etc. Si vous êtes ok avec ça, très bien.

Sinon, vous pouvez utiliser quelque chose comme MultilineLabel de JIDE, qui s'étend JTextArea. Cela fait partie de leur open source Commum Couche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X