Ich habe ein JLabel, auf dem viel Text steht. Gibt es eine Möglichkeit, das JLabel auf eine maximale Breite zu bringen, damit der Text so umbrochen wird, dass er diese Breite nicht überschreitet?
Vielen Dank
Ich habe ein JLabel, auf dem viel Text steht. Gibt es eine Möglichkeit, das JLabel auf eine maximale Breite zu bringen, damit der Text so umbrochen wird, dass er diese Breite nicht überschreitet?
Vielen Dank
Antworten:
Nein.
Sie können HTML in der Beschriftung verwenden, müssen dann aber das break-Tag hart codieren.
Ein besserer Ansatz besteht darin, eine JTextArea zu verwenden und das Wrapping zu aktivieren. Sie können den Hintergrund, den Vordergrund, die Schriftart usw. des Textes ändern, damit er wie eine Beschriftung aussieht.
Beachten Sie, dass diese Antwort ab mindestens Java 7 veraltet ist.
Gemäß der Antwort von @ darren müssen Sie den String lediglich mit
<html>
und</html>
tags umbrechen:Sie müssen keine Break-Tags fest codieren. Der Text wird umgebrochen, wenn die Größe der Komponente geändert wird.
quelle
Ja, es gibt zwei ähnliche Möglichkeiten (erstens mit css style = "width: ... px", zweitens mit html WIDTH = .......:
1.
2.
quelle
</html>
Übrigens :)oder einfach benutzen
quelle
JLabel lblTitle = new JLabel("<html>My very very very long title text</html>");
myString
zuerst maskiert werden. WennmyString
es sich um etwas wie "Wert <5" handelt, wird es als "Wert 5" angezeigt.Sie können HTML ohne Hardcodierung von Break-Tags verwenden, wenn Sie stattdessen Absatz-Tags verwenden.
quelle
JXLabel im SwingX-Projekt unterstützt das Umbrechen
quelle
Es gibt eine gute Technik hier , blättern Sie bis zum Ende des Artikels.
quelle
Abgesehen davon, dass der Text in
<html>
Tags eingeschlossen wird, müssen Sie das Etikett auch in einen Container legen, der die bevorzugte Höhe berücksichtigt und die Breite auf Maximum setzt. Beispielsweise können Sie das Etikett in den NORDEN von a einfügenBorderLayout
.Hier ist ein einfaches, aber vollständiges Arbeitsprogramm, um dies zu veranschaulichen. Sie können die Größe des Rahmens beliebig ändern. Das Etikett nimmt die gesamte Breite ein und die Höhe wird entsprechend angepasst, um den Text zu umbrechen. Beachten Sie, dass ich nur
<html>
Tags verwende und das Etikett in den Norden desBorderLayout
.quelle
<html>
Das Wickeln funktioniert aber nicht in allen Fällen. Wenn der übergeordnete Container FlowLayout verwendet, funktioniert dies nicht. Deshalb habe ich es auf BoxLayout gesetzt. Schauen Sie sich dieses Code-Snippet an:<br>
Fügen Sie nichts hinzu, da dies Ihren Text beschädigt, selbst wenn Sie den übergeordneten Frame und den pRefundNote-Container vergrößern.quelle
Wenn Sie nur JLabel verwenden möchten, können Sie diesen Ansatz ausprobieren.
Zeigen Sie einfach die Anzahl der Zeichen an, die Sie mit der Teilzeichenfolgenmethode auf dem Etikett anzeigen möchten.
quelle