FontMetrics

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
servus,
habe folgendes Problem bzw fragen:

kann ich mit fontmetrics direkt float-variablen auslesen?
ich möchte eine zahl ausgeben z.B

Code:
DecimalFormat df = new DecimalFormat("0.00");
e.drawString("" + df.format(zahl),  320, 50);

die zahl wir über ein textfeld eingegeben und ich möchte wissen, wie lange die zahl ist, die am ende mit drawstring ausgegeben wird.

ich weiss nicht wie ich das machen soll, wenn ich die zahl vorher in einen string formatiere bringt mir das ja nicht viel, weil sie bei der ausgabe ja #,## angehängt bekommt.

ich hoffe ihr versteht was ich meine :bahnhof:

kann ich die zahl irgendwie schon vorher formatieren oder sowas in der art?
 

foobar

Top Contributor
Code:
DecimalFormat df = new DecimalFormat("0.00");
int length = df.format(zahl).length();
In length hast du jetzt die Länge, der auszugebenden Zahl.
 
G

Guest

Gast
Mit FontMetrics.stringWidth(String str)
kannst Du die Breite des resultierenden Strings ermitteln.

Wenn es Dir um die Breite des Eingabefeldes geht, dann
kannst Du mit textField.setColumns(int) die sichtbare Breite
festlegen. Wähle dafür die Länge des längsten nummerischen
Strings, den Dein Formatter erzeugen kann.
 
G

Gast

Gast
@foobar

danke,
das ist schonmal gut bei z.B. 100,00 gibt er mir jetzt 6 zeichen aus.
das ganze bräuchte ich allerdings in pixeln.
 
G

Gast

Gast
ich habe jetzt den wert der raus kommt einfach *8 genommen.

also bei 100,00 = 6(zeichen)
6*8 = 48pixel

die darstellung bei mir ist jetzt genau. ist der pixelbreite pro zeichen abhängig von der bildschirmauflösung oder kann ich davon ausgehen das es überall gleich aussieht.

Code:
  if (event.getSource() == goButton)
          	{                              
               fehler1 = 0;
               fehler2 = 0;
               fehler3 = 0;
               go = 1;
               try
                    {
                    deFloat = anteilEingabe.getText();
                    enFloat1 = deFloat.replaceAll(",",".");
                    anteile = Float.parseFloat(enFloat1);
                    }
               catch (NumberFormatException e)
                    {
                    fehler1 = 1;
                    }

so wird das textefeld ausgelesen und dann dargestellt

Code:
int x1 = df.format(anteile).length();
x1 = x1 * 8;
e.drawString("" + df.format(anteile),  350 - x1, 50);

gibt es noch eine bessere lösung?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben