Java ME Font laden?

bruce85

Bekanntes Mitglied
Hallo,
ich versuche schon seit paar Stunden eine Font zu laden, leider ohne erfolg.
Ich habe schon gegoogelt oder hier im Forum gesucht, leider bekomme ich immer einen Kompiler error.

Hier mal ein teil von meinem Code:
Java:
package java.awt.font;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;

class MyCanvas extends Canvas {
         public void paint(Graphics g) {
                 g.setColor(255,0,0);
                 g.fillRect(0,0,getWidth(),getHeight());
                 g.setColor(255,255,255);
                 Font f = new Font("Arial",1,13);
                 g.setFont(f);
                 g.drawString("Tag",(getWidth()/2)-((getWidth()/2)/2),0,g.TOP|g.LEFT);
                 g.drawString("Datum",(getWidth()/2)+((getWidth()/2)/2),0,g.TOP|g.LEFT);
                 g.drawLine(0,20,240,20);
                 g.drawLine(120,0,120,320);
         }
}

Und hier der Fehler:
Code:
cannot find symbol
symbol  : constructor Font(java.lang.String,int,int)
location: class javax.microedition.lcdui.Font
Font f = new Font("Arial",1,13);

Was habe ich falsch gemacht?

Ich bedanke mich schonmal im Voraus.

MfG
 

bruce85

Bekanntes Mitglied
Danke Dir.
Ich habe vor einigen Monaten das letzte mal in J2ME Programmiert und da hat es auch funktioniert.
Diesen Code habe ich ja von meinem alten Projekt und jetzt will das einfach nicht mehr gehen.
Ich denke das irgendwelche Module bei mir fehlen oder so.

Woran könnte das denn liegen?

MfG
 
M

MiDniGG

Gast
Hehe. Bei mir ist es noch etwas länger her, dass ich was mit JavaME gemacht habe... :-D

Ich kann Dir nur sagen, dass die API folgendes nicht unterstützt:
Java:
Font f = new Font("Arial", 1, 13);

Das hingegen schon:
Java:
Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD, Font.SIZE_MEDIUM);

Wenn das obere bei Dir ging hast Du evtl. eine externe LIB mit eingebunden o. ä. Kann Dir da leider nicht weiterhelfen...
 

bruce85

Bekanntes Mitglied
Danke Dir.
Dein beispiel funktioniert ja bei mir, das hatte ich ja auch gehabt, aber das andere finde ich besser.
Naja, ich weiss es nicht mehr wieso es bei mir früher ging, es ist schon etwas länger her.
Dann bleibt mir wohl keine andere möglichkeit als dein beispiel zu nehmen.

Noch eine Frage:
Wie kann ich dann die Breite des Strings ermitteln?
Ich hab das früher so gemacht gehabt:
Java:
Font f = new Font("Comic Sans MS",0,13);
FontMetrics fm = getFontMetrics(f);
und konnte so die Breite des Strings ermitteln:
Java:
fm.stringWidth("test");

Danke schonmal.

MfG
 
M

MiDniGG

Gast
Die normale Font hat die gleiche Methode. Also einfach
Code:
f.stringWidth(STRING);

Java:
Font f = new Font("Comic Sans MS",0,13);
Kenne ich btw. nur von JavaSE/EE also dem "normalen" Java. FontMetrics ebenso. Hast Du da vllt. was verwechselt?
 

bruce85

Bekanntes Mitglied
Danke Dir.
Verwechseln tu ich das nicht, Sry. ;-)
Ich hab das aus meinem alten Projekt, Java Applets für Handy. :D

Naja, ich werde es dann mal versuchen die String-Breite auszulesen.

Danke trotzdem für die Hilfe.

Edit: Ich hab es so jetzt gelöst:
Java:
class MyCanvas extends Canvas {
         public void paint(Graphics g) {
                 g.setColor(127,127,127);
                 g.fillRect(0,0,getWidth(),getHeight());
                 g.setColor(255,255,255);

                 Font aFont;
                 aFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE);
                 g.setFont(aFont);
                 g.drawString("Tag",(getWidth()/2)-((getWidth()/2)/2)-(aFont.stringWidth("Tag")/2),0,g.TOP|g.LEFT);
                 g.drawString("Datum",(getWidth()/2)+((getWidth()/2)/2)-(aFont.stringWidth("Datum")/2),0,g.TOP|g.LEFT);
                 g.drawLine(0,20,240,20);
                 g.drawLine(120,0,120,320);
         }
}

Danke nochmal.

MfG
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben