java.awt.Font - ist das wirklich alles?

fk1988

Mitglied
Ich möchte ein Programm schreiben, mit dem man einen Text mit bestimmten Aussehen in ein Fenster gezeichnet wird.
wenn ich im Internet nach Font + Java suche, findet man nur die java.awt.Font Klasse.
Mit dieser lassen sich jedoch nur einfache Einstellungen tätigen (Schriftfarbe, Größe, Stil, sowie nur 5 Schriftarten).

Java:
public void paintComponent(Graphics g)
{
    g.setFont(new Font("SansSerif", Font.BOLD, 18));
    g.setColor(Color.magenta);
    g.drawString("text der ausgegeben wird!", 100, 100);
}

Mein Programm sollte jedoch mehrere Einstellungsmöglichkeiten für den Font bieten
  • Schriftart samt Sonderzeichen (Arial, Calibri, GrilledCheese BT...)
  • Schriftfarbe (rot, blau)
  • Schriftgröße (12px, 45px, ...)
  • Schriftstil (Bold, Italic, Underlined)
  • Kontur, Konturdicke, Konturfarbe
  • Schatten

Hier findet Ihr ein Bild, dass die oberen Kriterien nocheinmal verdeutlicht:

2072667.png



Ich kann mir beim besten Willen nicht vorstellen, dass Java nur diese eine Fontklasse zur Verfügung stellt!
 
Java ist erstmal nur eine Programmiersprache. (Tststs... dass die Jugend heute es für selbstversändlich hält, dass man mit sowas einfachem wie "g.drawString" einen graphischen Text auf den Bildschirm bringen kann... :noe: 😉 )

Abgesehen von
Kontur, Konturdicke, Konturfarbe
Schatten
hast du in den drei Zeilen ja schon alles zusammengefasst. Underlined kann man mit einer einfachen Linie machen. Schatten ggf. indem man den Text einmal in Grau und dann nochmal versetzt in der richtigen Farbe malt. Kontur wird aufwändiger, da muss man sich den GlyphVector holen und die Umrisse von Hand zeichnen.
 
Sicher hast du die statischen Methoden [c]createFont()[/c] schlicht übersehen. Mit diesen lassen sich nämlich sämtliche verfügbaren TrueTypes und Type1-Fonts in Java einbringen und anschliessend mit [c]derive()[/c] umstylen und/oder resizen.
Über den Konstruktor [c]Font(Map<? extends Attribute, ?> attributes)[/c] und der Klasse TextAttribute lassen sich darüber hinaus noch jede Menge anderer Dinge machen, als simples Underline.
[EDIT]Aber nach dem "veröffentlichtem" Beispielbild (zur Verdeutlichung) möchtest du ja anscheinend gar nichts machen. 😉 :lol: Ich kann da zumindest kein Bild sehen.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

die Font-Klasse ist echt nicht alles. Das Graphics object in
Code:
public void paintComponent(Graphics g)
ist grundsätzlich vom Typ
Code:
java.awt.Graphics2D
. Du kannst es also immer casten:
Java:
public void paintComponent(Graphics g) {
  Graphics2D g2d = (Graphics2D) g;
  // und dann hast Du viel mehr Möglichkeiten Text darzustellen
  g2d.drawGlyphVector(glyphVector, x, y);
  g2d.drawString(attributedCharacterIterator, x, y);
  // ...
}

Die Java 2D-Api erfordert erst mal Einarbeitung, aber dann hat man enorm viel Möglichkeiten. Ein gutes Buch dazu: Java 2D Graphics von Jonathan Knudsen. O'Reilly. ISBN 1-56592-484-3. Das gibt nicht mehr, aber vielleicht gebraucht oder in einer Bibliothek. Die Beispiele aus dem Buch kann man beim O'Reilly-Verlag runter laden.


Viele Grüße
Momolin
 

Neue Themen


Zurück
Oben