Wie kann ich den Text eines JLabels in eine andere Zeile erweitern?
Wie kann ich den Text eines JLabels in eine andere Zeile erweitern?
Antworten:
Sie können dies tun, indem Sie HTML in den Code einfügen.
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);
A
in meinem JLabel schreiben?" Antwort: Lassen Sie das JLabel HTML verwenden und verwenden Sie die HTML-EntitätA
Ich habe JTextArea für mehrzeilige JLabels verwendet.
JTextArea textarea = new JTextArea ("1\n2\n3\n"+"4\n");
http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextArea.html
Geben Sie den Inhalt (dh das Eigenschaftsfeld "Text") in ein <html></html>
Tag ein. Sie können also eine neue Zeile verwenden <br>
oder <P>
einfügen.
Zum Beispiel:
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>";
Es wird wie folgt angezeigt:
Twinkle, Twinkle, kleiner Stern,
wie ich mich frage, was du bist.
Oben über der Welt so hoch,
wie ein Diamant am Himmel.
Sie können auch ein JXLabel aus der SwingX-Bibliothek verwenden .
JXLabel multiline = new JXLabel("this is a \nMultiline Text");
multiline.setLineWrap(true);
Das ist schrecklich. Alle diese Antworten deuten darauf hin, dass der Anfang des Etikettentextes hinzugefügt wird, und es gibt kein Wort in der Java 11-Dokumentation (oder früher) für JLabel, das darauf hindeutet, dass der Text eines Etiketts anders behandelt wird, wenn er anfängt <html>
. Wer sagt, dass das überall funktioniert und immer funktioniert? Und Sie können große, große Überraschungen erleben, wenn Sie beliebigen Text einpacken und an eine HTML-Layout-Engine übergeben.
Ich habe die Antwort, die JTextArea vorschlägt, positiv bewertet. Ich werde jedoch darauf hinweisen, dass JTextArea kein Ersatz ist. Standardmäßig wird es erweitert, um Zeilen zu füllen. So verhält sich JLabel nicht. Ich habe noch keine Lösung dafür gefunden.
In meinem Fall war es genug, den Text bei jeder zu teilen \n
und dann JLabel
für jede Zeile eine zu erstellen :
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);
}
Ich habe oben in einem verwendet JOptionPane.showMessageDialog
Sie können JTextArea
Bearbeitungsfunktionen verwenden und entfernen, um normalen schreibgeschützten mehrzeiligen Text zu erhalten.
JTextArea textArea = new JTextArea("line\nline\nline");
textArea.setEditable(false);
Es ist möglich, (einfaches) CSS im HTML zu verwenden.
Diese Frage wurde von Multiline JLabels - Java verlinkt .
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);