Um in ein Panel einen String zu zeichnen, habe ich die Methode paint() überschrieben. Da ich aber weiterhin die Größe des Panels nach jedem Zeichnen so anpassen möchte, dass es nur so groß ist, wie es für das Anzeigen der Schrift sein muss, bräuchte ich irgendwie die Anzahl der für den String benötigten Pixel. Die Anzahl der Zeichen bekomm ich mit String.length() geliefert. Eine Möglichkeit wäre es, einfach zu sagen, dass pro Zeichen eine feste Anzahl Pixel für das Panel angenommen werden soll, aber das wird mit zunehmender Stringlänge ja immer ungenauer...und solch eine Schriftart, bei der alle Zeichen gleich breit sind ( mir fällt grad nicht ein wie der Begriff dafür lautet) möchte ich auch nicht verwenden.
Hier ist ein Auszug aus meinem Code:
addOutput() wird aufgerufen, und danach dann repaint(). Width soll am Ende die erforderlichen Pixelanzahl beeinhalten, um die Panelbreite in paint() zu ändern(das steht jetzt noch nicht im Code).
Der "provisorische Ansatz" soll jetzt so ersetzt werden, dass da nicht eine abgeschätze Pixelzahl drinsteht, sondern die wirklich benötigte.
Kann mir da irgendjemand weiterhelfen? Ich war der Meinung, um die Pixelzahl zu erhalten, gäbe es eine Methode, aber die hab ich der API nicht gefunden. Vielen Dank schonmal.
Hier ist ein Auszug aus meinem Code:
Code:
int height = 30;
int width = 0;
String string="";
@Override
public void paint(Graphics g)
{
//hier würde später die Größe des Panels verändert werden
g.drawString(string,10,20);
}
public void addOutput(String string)
{
//provisorischer Ansatz
width = string.length()*6;
}
addOutput() wird aufgerufen, und danach dann repaint(). Width soll am Ende die erforderlichen Pixelanzahl beeinhalten, um die Panelbreite in paint() zu ändern(das steht jetzt noch nicht im Code).
Der "provisorische Ansatz" soll jetzt so ersetzt werden, dass da nicht eine abgeschätze Pixelzahl drinsteht, sondern die wirklich benötigte.
Kann mir da irgendjemand weiterhelfen? Ich war der Meinung, um die Pixelzahl zu erhalten, gäbe es eine Methode, aber die hab ich der API nicht gefunden. Vielen Dank schonmal.