Ich habe zwei Felder. Wie kann ich das zweite Feld in der nächsten Zeile anzeigen lassen? zB lbl1 - erste Zeile, lbl2 --- zweite Zeile. JLabel lbl1 = neues JLabel ("Label 1:"); panel.add (lbl1); JLabel lbl2 = neues JLabel ("Label 2"); panel.add (lbl2);
Jessy
1
Es können Formatierungsprobleme auftreten, wenn der Standardtextstil für Beschriftungen nicht mit dem von HTML übereinstimmt. Obwohl neun von zehn Mal wird es funktionieren ...
Tom Hawtin - Tackline
1
Verwenden Sie für 2 Felder untereinander einfach ein GridLayout mit 2 Zeilen und 1 Spalte. Easy peasy :)
tddmonkey
7
Ich sage die Zukunft von StackOverflow in zwei Jahren voraus: "Wie kann ich den Brief Ain meinem JLabel schreiben?" Antwort: Lassen Sie das JLabel HTML verwenden und verwenden Sie die HTML-EntitätA
Simon Forsberg
Denken Sie daran, die bevorzugte Größe des Etiketts festzulegen, damit die Verpackung wirksam wird.
Treecoder
17
Wenn Sie möchten, dass die Größe Ihres jLabel-Texts automatisch geändert wird, z. B. in einem dehnbaren Gridbaglayout, reicht dies aus, um den Text wie folgt in HTML-Tags einzufügen:
JLabel label = new JLabel("<html>First line and maybe second line</html>");
Ich kann nicht glauben, dass dies mehr erwähnt wird! Überall sonst wird gesagt, dass der HTML-Modus verwendet werden soll, der viele Dinge wie zusätzliche Abstände aufhebt.
Rokoko
8
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.
Diese Antwort schien die beste zu sein, bis ich bemerkte, dass JXLabel weder Standard-Java ist, noch Sie erwähnt haben, aus welcher Bibliothek es stammt.
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.
Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontexts darüber, warum und / oder wie er die Frage beantwortet, ihren langfristigen Wert erheblich verbessern. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen.
Toby Speight
-8
warum Sie komplexe Dinge geben ... Sie können es einfach tun, indem Sie "\ n" anstelle von HTML-Tags setzen
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);
quelle
A
in meinem JLabel schreiben?" Antwort: Lassen Sie das JLabel HTML verwenden und verwenden Sie die HTML-EntitätA
Wenn Sie möchten, dass die Größe Ihres jLabel-Texts automatisch geändert wird, z. B. in einem dehnbaren Gridbaglayout, reicht dies aus, um den Text wie folgt in HTML-Tags einzufügen:
JLabel label = new JLabel("<html>First line and maybe second line</html>");
quelle
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
quelle
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.
quelle
Sie können auch ein JXLabel aus der SwingX-Bibliothek verwenden .
JXLabel multiline = new JXLabel("this is a \nMultiline Text"); multiline.setLineWrap(true);
quelle
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.
quelle
In meinem Fall war es genug, den Text bei jeder zu teilen
\n
und dannJLabel
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
quelle
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);
JTextArea
setEditable
quelle
Es ist möglich, (einfaches) CSS im HTML zu verwenden.
Diese Frage wurde von Multiline JLabels - Java verlinkt .
quelle
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);
quelle
warum Sie komplexe Dinge geben ... Sie können es einfach tun, indem Sie "\ n" anstelle von HTML-Tags setzen
quelle