# Pixelbreite eines Strings



## NewDesigner (7. Mrz 2007)

Servus,
weiss jemand wie man die Pixelbreite eines Strings herausbekommt?


----------



## HaBaLeS (7. Mrz 2007)

JA ich weiss es. Wer noch ?

<<Hint>>


----------



## NewDesigner (7. Mrz 2007)

Wie kann ich das benutzen. Ist ja abstract. Muss ich eine neue Klasse schreiben die davon erbt?


----------



## SnooP (7. Mrz 2007)

nöö... es gibt die FontDesignMetrics - allerdings liefert dir jede JComponent mit getFontMetrics das entsprechende Objekt zu einem mitzugebenden Font-Objekt... und schwupp haste alles was du brauchst  ...


----------



## NewDesigner (7. Mrz 2007)

Das hilft mir auch nicht so weiter:
Was ich hab ist ein SWTResourceManager.getFont("Arial", 10, SWT.NONE)
Irgendwie brauch ich nun die Pixelbreite eines Strings um die breite eines Labels anzugeben.


----------



## Lim_Dul (7. Mrz 2007)

Rein aus neugierde, warum willst du explizit die Breite angeben?

Die Labels berechnen die intern selber, in den meisten Fällen muss man das nicht.


----------



## HaBaLeS (7. Mrz 2007)

Auch SWT hat Fontmetrics

Hint 2


Man kann sowas schon gut brauchen, wenn z.B. man selbst Graphen o.ä. erstellt. (Consolen, Menüs für Spiele)


----------



## NewDesigner (7. Mrz 2007)

Ich krieg eine Map. Der Key soll als Label und das Value in einem Textfeld dargestellt werden.
Für jedes Key,value Paar soll eine Zeile aus Label und Textfeld erstellt werden.
Da nun ein Labelwert 1 Zeichen und der nächste 100 Zeichen haben kann muss ich  dynamisch die Labelbreite bestimmen damit der Abstand zwischen Laben und Textfeld nicht zu gross wird (fix 10 Pixel).
Des wegen brauch ich die Pixelbreite eines Strings um die Pixelbreite des Labels zu bestimmen....

Mit den Links zu http://help.eclipse.org/help32/inde...api/org/eclipse/swt/graphics/FontMetrics.html
komm ich nicht weiter....


----------



## HaBaLeS (7. Mrz 2007)

gc.stringExtent

Ich hab zwar keine ahnung von SWT, aber google und API-Docs kann ich bedienen. 

Ich verstehe es so, das du dir eigentlich immer   aus den Komponenten/Events etc.. ein GC Objekt hohlen kannst.
Dann machst du:


```
// Set the font into the gc
     gc.setFont(font);

   // Calcalute the width (nad height) of the string
     Point pt = gc.stringExtent(STRING);
```

Das beispiel an dem ich mich orientiert habe findest du Hier


----------



## NewDesigner (7. Mrz 2007)

Danke für die Hilfe.
Kann es leider nicht so gebrauchen.
Muss mir mal gedanken machen....
Bis denn


----------



## NewDesigner (8. Mrz 2007)

Hi,
also ich hab folgende versucht

FontMetricsImpl o = new FontMetricsImpl(); //leitet von Drawable ab
GC gc = new GC(o);
gc.setFont(SWTResourceManager.getFont("Arial", 10, SWT.NONE));
Point p = gc.stringExtent("HHHHHHAAAAAAAAALLLLLLLLLLLLllloooooooooooo);
FontMetrics fontMetrics = gc.getFontMetrics();

nur wie krieg ich nun die Pixelanzahl der Breite des Strings raus? :-(


----------



## HaBaLeS (8. Mrz 2007)

In diesem Fall brauchst du die Fomtmetrics garnicht.


```
//Dein Code HIER 

int stringLenghtInPixel = p.x;
int stringHeightInPixel = p.y;
```


----------

