PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JLabel mit Zeilenumbruch


Seppo
2004-02-12, 21:37:35
Ich will eine längeren Text in ein JLabel schreiben. Dieses bekommt dann einen Rahmen und eine Überschrift. Jedoch werden im JLabel ja keine automatischen Zeilenumbrüche gemacht.
Wenn ich anstatt eines JLabels eine JTextArea verwende gibt's zwar Zeilenumbrüche, aber der Hintergrund hat eine andere Farbe und es gibt einen eigenen Rahmen. Wegen den verschiedenen Look&Feels kann ich die Hintergrundfarbe ja auch nicht einfach per Hand ändern.
Gibt es also ein JLabel mit Zeilenumbruch??

HellHorse
2004-02-12, 22:51:27
Soviel ich wiess, kann ein JLabel nur eine Zeile Text enthalten (und ein Icon). Habe mal etwas versucht in der Richtung new JLabel("Zeile eins\nZeile zwei"), hat aber nicht hingehauen.
Du hast mehrere Möglichkeiten:

2 JLabel nehmen ;)
Die Hintergrundfrabe für die JTextArea kannst du bei einem anderen Komponenten klauen, so bleibst du unabhängig von LAF.
Auch kannst du versuchen den Rand durch einen leeren zu ersetzen
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/BorderFactory.html
Schnell einen eigenen Komponenten schreiben, der von JComponent erbt und paintComponent(Graphics) überschreibt.
FontMetrics und drawString(String) sind hier deine Freunde.

El Fantastico
2004-02-12, 23:38:54
HTML-Code für Text funzt in Swing-Komponenten auch:

Also z.B.

new JLabel("<HTML><BODY>Zeile 1<BR>Zeile 2</BODY></HTML>")

HellHorse
2004-02-13, 00:51:41
Original geschrieben von El Fantastico
HTML-Code für Text funzt in Swing-Komponenten auch:

Also z.B.

new JLabel("<HTML><BODY>Zeile 1<BR>Zeile 2</BODY></HTML>")

Stimmt geht. Weisst du einen Weg, wie das ohne HTML geht?
Dabei ist mir aufgefallen, JLabel, die mit HTML erstellt wurden, werden automatisch auf mehrere Zeilen verteilt, wenn der horizontale Platz nicht ausreicht. => Problem gelöst

new JLabel("<HTML><BODY>Ein sehr langes Label, das eventuell auf mehrere Zeilen muss werden muss</BODY></HTML>");

Kann man dieses Verhalten auch ohne HTML aktivieren?

El Fantastico
2004-02-13, 07:39:08
Original geschrieben von HellHorse
...
Kann man dieses Verhalten auch ohne HTML aktivieren?
Soweit ich weiss nein...

Hier noch ein Link zur entsprechenden Sun-Doku:
http://java.sun.com/docs/books/tutorial/uiswing/components/html.html

Seppo
2004-02-13, 10:09:41
Auf so eine einfache Lösung wäre ich gar nicht gekommen ;)