# Anpassung von JLabel Größe



## Carl (1. Mrz 2009)

Hallo zusammen,
ich habe ein kleines Problem mit ein paar JLabels in meinem Programm.

Und zwar möchte ich JLabels erzeugen die einen Text anzeigen. Dieser Text ist immer einzeilig und kann unterschiedlich lang sein.

Um die genaue Position für dieses Label zu setzen, ist es für mein Programm wichtig, dass das Label exakt so Groß ist, dass der Text gerade noch vollständig angezeigt wird.

Ich habe bisher leider keine passenden Methoden gefunden.
Es müssen auch nicht unbedingt JLabels sein es muss nur etwas sein was Text anzeigt und genauso Groß ist wie der Text es eben benötigt.

Hoffe hier kann mir jemand helfen.

Gruß,
Carl


----------



## Schandro (1. Mrz 2009)

lauf inner Schleife alle Font-Größen durch und guck welche grad noch so in die Size des Components reinpasst (Stichwort FontMetrics und getSize()....) . Das ganze kann man natürlich noch Perfmormancemäßig optimieren, z.b. indem du die Suche nicht wieder von fontsize= 0 startest, sondern von der als letzten genomenen. (schließlich verändert sich die Größe eine Compnents fast immer nur um einzelne Pixel und net um ein paar hundert Pixel auf einmal


----------



## Carl (1. Mrz 2009)

Ich will ja nicht die Schriftart so wählen dass es reinpasst sonder die Größe des Labels so verändern das die Schrift gerade so vollständig sichtbar ist. Ich will quasi den "unsichtbaren" Rand weg haben.

Wenn die Schrift z.B. eine Breite von 10 Pixeln einnimmt. dann möchte ich auch die Breite des Labels auf 10 Pixel setzen.

Das Problem ist das der Inhalt und somit die Länge der Schrift nicht vorhersagbar ist. (Es sind Zahlen mit ggf Nachkommastellen)

Ich muss also das Label an die Breite des Textes anpassen und nicht andersherum


----------



## Schandro (1. Mrz 2009)

Dann brauchst du doch einfach nur vom gesetzten Font nen FontMetrics Object machen, dessen stringWidth(label.getText()) und getHeight() Methode liefert dir die nötige Größe


----------



## Ebenius (2. Mrz 2009)

Ein JLabel setzt immer seine Preferred Size so, dass der Text (und/oder das Icon, so vorhanden) genau reinpassen.

Du solltest also einen LayoutManager verwenden, der das Label mit seiner PreferredSize anzeigt. Näheres zu LayoutManager findest Du im Sun Java Tutorial » Lesson: Laying Out Components Within a Container.

Ebenius


----------

