Double Possible:
Texte multiligne dans JLabelJe 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>"); }
- Texte multiligne dans JLabel (5 réponses )
Réponses
Trop de publicités? 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.
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
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>");
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.