Guida alla programmazione delle GUI, interfacce grafiche in Java 2D - 15: il disegno di base in Java2D: testo e font
Capitolo 15: Il disegno di base in Java2D: testo e font.
La creazione e la visualizzazione a video del testo in Java avviene in (almeno) tre passaggi; è necessario infatti:
- creare un oggetto Font, che identifica un carattere, per decidere che aspetto dare alla stringa da visualizzare a video;
- impostare il Font così creato come Font del contesto grafico (tutte le stringhe scritte dopo tale passaggio avranno quel Font, a meno di non cambiare Font impostandone uno differente);
- visualizzare a video la scritta.
Per definire un Font è possibile utilizzare il costruttore:
- Font(String name, int style, int size) : Font .
Analizziamone i parametri:
- name identifica il nome del Font; Font predefiniti, riconosciuti da Java, sono ad esempio "Serif" (simile al Times New Roman), "SansSerif" (simile all'Arial) e Monospaced (simile al Courier);
- style serve ad indicare se il Font deve essere in grassetto (Font.BOLD), in corsivo (Font.ITALIC), corsivo e grassetto (Font.ITALIC + Font.BOLD) o 'semplice', cioè non corsivo e non grassetto (Font.PLAIN);
- size indica la dimensione, in punti, del carattere, proprio come avviene negli editor di testo (es.: 8, 10, 24, ...).
Esempio di definizione di un Font SansSerif corsivo con grandezza 24:
- Font f = new Font("SansSerif", Font.ITALIC, 24); .
Per impostare il Font appena creato come Font del contesto grafico dovremo utilizzare il metodo di Graphics:
Ad esempio, riprendendo il Font f precedentemente definito, avremo (in paintComponent):
A questo punto sappiamo che aspetto avrà la nostra stringa da visualizzare a video, ma non l'abbiamo ancora mostrata; per farlo, utilizziamo - in paintComponent - il metodo di Graphics:
- drawString(String str, int x, int y);
dove str è la stringa da mostrare a video, mentre x e y identificano la coordinata x e la coordinata y della posizione che il vertice in alto a sinistra di un ipotetico 'box' che racchiude la nostra scritta avrà nella componente che conterrà la scritta.
Ad esempio, scriveremo:
- g.drawString("Ciao !", 50, 50); .
Come potete notare, non abbiamo bisogno di specificare che Font usare: Java utilizzerà l'ultimo Font impostato per il contesto grafico.
Una nota finale: per scoprire quali 'Font names' sono supportati dal sistema attualmente in uso, potete utilizzare il metodo
- getAvailableFontFamilyNames() : String[]
della classe GraphicsEnvironmente del package AWT; in pratica, dovrete scrivere qualcosa come:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] availableFont = ge.getAvailableFontFamilyNames();
getAvailableFontFamilyNames restituirà un array di stringhe, per cui potrete ad esempio scorrere tale array per verificare se il Font che volete utilizzare nella vostra applicazione è supportato dal sistema (in caso positivo potrete impostarlo, altrimenti potrete optare per un Font alternativo, se supportato).
|