2009-07-23 11 views
1

Ich habe eine JLabel, die ich mit einigen Transforms, die auf das Graphics-Objekt angewendet werden soll, abziehen muss.Wie klein kann das JLabel sein?

Ich versuche, die JLabel so klein zu machen, wie es ohne Auslassungspunkte je nach seinem Textinhalt sein kann.

Was zu tun, ich versuche:

setBounds(0, 0, label.getMinimumSize().width, label.getMinimumSize().height); 

Manchmal ergibt diese Ellipsen und manchmal jetzt. Es hängt wirklich von der angewandten Transformation ab (normalerweise willkürliche Skalierung in einer Animation).

Fehle ich etwas offensichtliches mit dem, was ich als "minimale Größe" betrachten sollte, bekomme ich einige Rundungsfehler, die abgerundet werden, usw.?

Bitte zeigen Sie mir in die richtige Richtung.

Antwort

3

Die Funktion label.getMinimumSize() wird vom UI-Delegaten berechnet und hat mehr mit dem Layout und seinem Chrom als mit seinem Inhalt zu tun. Vielleicht können Sie versuchen zu berechnen, welche Größe auf dem Text basieren soll? wie

Etwas ...

JLabel label = new JLabel("xx"); 
int minWidth = ((int) (label.getFontMetrics(label.getFont()).getStringBounds(label.getText(),label.getGraphics()).getWidth()) + label.getInsets().left + label.getInsets().right); 

und ähnlich für die Höhe.