Wie lässt sich der Schrifttyp einer Komponente festlegen und ändern?
Allgemeines
Ein Betriebssystem definiert drei Standard-Schriftarten, die zur
Darstellung von Texten am Computer genutzt werden, eine serifierte
Schrift, eine serifenlose Schrift und eine Festbreitenschrift.
Java
verwendet entsprechend die drei Schriftfamilien 'Serif', 'SansSerif'
und 'Monospace', die je nach verwendetem Betriebssystem in dessen
Standard-Schriftfamilien ausgegeben werden.
Um innerhalb eines Java-Programms eine andere Schriftfamilie zu
verweden oder um Eigenschaften ansprechen zu können, muss ein
Objekt der Klasse Font
erzeugt und dies der
darstellenden Komponente zugewiesen werden. Hierzu stehen drei
Konstruktoren der Klasse Font
bereit. Der hier
verwendete nutzt neben dem Schriftnamen als String
zwei
int
-Parameter für den Schriftstil und die
Größe in Punkt. Es muss unbedingt darauf geachtet werden,
dass diese beiden nicht verwechselt werden. Die zu verwendende
Schriftfamilie muss natürlich auch auf dem Computer installiert
sein, um angezeigt werden zu können. Ist dies nicht der Fall,
so wird statt dessen die jeweilige Standardschrift verwendet.
Font font = new Font("Verdana", Font.PLAIN, 40); JLabel label = new JLabel("Beispieltext"); label.setFont(font); System.out.println(label.getFont().getFamily());
Mit der Methode Component.getFont()
kann das Font
-Objekt
einer Komponente angesprochen werden.
Das Beispiel
Nach dem Erzeugen des JFrame
als Anwendungsfenster und
zweier JLabel
werden diese dem JFrame
in
einem GridLayout
hinzugefügt.
Die Schrift, die
auf den JLabel
angezeigt werden soll wird durch einen
Konstruktor der Klasse Font
erzeugt. Hierzu wird der
Konstuktor, wie oben angesprochen, mit drei Parametern aufgerufen.
Sie betreffen die Schriftfamilie, den Schriftstil und die
Größe in Punkt.
Dem Beispiel ist zu entnehmen, wie zwei
Stile der Klasse Font
gemeinsam angewendet werden
können. In diesem Fall wird die Schrift fett (bold)
und kursiv (italic) gesetzt.
Hierzu müssen die
statischen Felder der Schriftstile durch den logischen Und-Operator
('|
') getrennt voneinander angegeben werden. Deren
Bitmasken werden intern verrechnet und auf das Objekt der Klasse
angewendet. Die Stile werden dabei gemischt, nicht addiert, sodass
eine Schrift durch zusätzliche Angaben von Font.BOLD
z.B. nicht noch fetter gemacht werden kann.
Durch die Methode setFont()
wird die Schrift der Komponente zugewiesen.
import java.awt.Font;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class FontClass {
public static void main(String[] args) {
JFrame frame = new JFrame();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
frame.setLayout(new GridLayout(2,1));
frame.getContentPane().add(label1);
frame.getContentPane().add(label2);
Font font = new Font("Verdana", Font.BOLD | Font.ITALIC, 20);
label1.setFont(font);
label1.setText("Font unver\u00e4ndert");
font = font.deriveFont(Font.PLAIN, 50F);
label2.setFont(font);
label2.setText("Font ge\u00e4ndert");
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setTitle("Font Test");
frame.setVisible(true);
}
}
Die Methode deriveFont()
der Klasse Font
dient zur Änderung eines Font
-Objektes. Sie ist
mit unterschiedlichen Parametern mehrfach überladen, sodass die
Eigenschaften auf verschiedene Weise geändert werden
können. Die Methode gibt eine abgewandelte Kopie des
aufrufenden Font
-Objektes zurück.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.