Sei sulla pagina 1di 7

Programazione grafica: lAPI Graphics

Con il termine programmazione grafica in Java si intende la possibilit di disegnare forme (rettangoli, ovali, ecc.), disegnare testo, impostare i colori per il disegno, impostare il tipo di font per il testo, all'interno di un contenitore (tipicamente un JPanel). Le classi usate a tale scopo sono: Graphics, Color e Font; tutte appartengono al package java.awt.
Object

Color

Font

Graphics

Per disegnare in un panello necessario: 1. derivare una classe da JPanel; 2. ridefinire il metodo paintComponent di tale classe. Il metodo paintComponent definito nella classe Jcomponent con la seguente firma:

protected void paintComponent(Graphics g)

In Java tutti i disegni sono essere gestiti dal sistema attraverso un oggetto Graphics, che il programmatore non manipola direttamente. Il metodo paintComponent viene chiamato automaticamente quando una parte di un componente deve essere ridisegnata; il programmatore non deve interferire con questo processo automatico. Il metodo paintComponent, quando ridefinito nella sottoclasse, deve sempre contenere come prima istruzione la chiamata al metodo paintComponent della superclasse. Per esempio: public void paintComponent(Graphics g) { super.paintComponent(g); //segue il codice per il disegno } Il chiamante pu ordinare di ridisegnare il pannello, o pi in generale un componente, utilizzando il metodo repaint della classe Component di java.awt:

public void repaint()

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

Alcuni metodi della classe Graphics

public void drawLine(int x_inizio, int y_inizio, int x_fine, int y_fine) Disegna una linea che va dal punto (x_inizio,y_inizio) al punto (x_fine,y_fine), utilizzando il colore correntemente impostato.

public void drawRect(int x, int y, int larghezza, int altezza)

Disegna un rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y), utilizzando il colore correntemente impostato.

public void drawRoundRect(int x, larghArea, int altArea)

int y,

int larghezza,

int altezza,

int

Disegna un rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y), utilizzando il colore correntemente impostato. Il rettangolo ha gli angoli arrotondati. I parametri larghArea e altArea definiscono larghezza e altezza dell'area con gli angoli arrotondati: pi grande quest'area, tanto pi gli spigoli sono arrotondati.

public void drawOval(int x, int y, int larghezza, int altezza)

Disegna l'ovale inscritto nel rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y), utilizzando il colore correntemente impostato.

public void drawString(String str, int x, int y)

Disegna la stringa str a partire dal punto di coordinate (x,y), utilizzando il colore correntemente impostato.

public void fillRect(int x, int y, int larghezza, int altezza)

Disegna un rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y). Il rettangolo viene riempito con il colore correntemente impostato.

public void fillRoundRect(int x, int y, int larghezza, int altezza, int larghArea, int altArea)

Disegna un rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y). Il rettangolo viene riempito con il colore correntemente impostato e ha gli angoli arrotondati. I parametri larghArea e altArea definiscono larghezza e altezza dell'area con gli angoli arrotondati: pi grande quest'area, tanto pi gli spigoli sono arrotondati.

public void fillOval(int x, int y, int larghezza, int altezza)

Disegna l'ovale inscritto nel rettangolo di larghezza e altezza specificate e il cui vertice superiore sinistro coincide con il punto di coordinate (x,y). L'ovale viene riempito con il colore correntemente impostato.

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

public Color getColor()

Restituisce il colore impostato per le operazioni di disegno.

public Font getFont()

Restituisce il tipo di font impostato per le operazioni di disegno.

public void setColor(Color colore)

Imposta il colore specificato per tutte le operazioni di disegno successive.

public void setFont(Font font)

Imposta il tipo di font specificato per tutte le operazioni di disegno successive.

Esempio: Disegnare un rettangolo


import import import import import import java.awt.BorderLayout; java.awt.Color; java.awt.Container; java.awt.Graphics; javax.swing.JFrame; javax.swing.JPanel;

@SuppressWarnings("serial") public class PaintFrame extends JFrame { public static final int LARGHEZZA= 300; public static final int ALTEZZA= 300; public PaintFrame() { super("Rettangolo"); setSize(LARGHEZZA,ALTEZZA); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = getContentPane(); PaintArea panel= new PaintArea(); panel.setBackground(Color.white); contentPane.add(panel,BorderLayout.CENTER); } class PaintArea extends JPanel { public static final int X= public static final int Y= public static final int W= public static final int H=

10; 10; 100; 150;

public void paintComponent(Graphics g) { super.paintComponent(g); g.drawRect(X, Y, W, H); } }

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

public static void main(String args[]) { PaintFrame frame= new PaintFrame(); frame.setVisible(true); }

Figura 1. Un rettangolo disegnato in un pannello

Utilizzare i colori: la classe Color


I colori vengono definiti con la classe Color, del package java.awt. La classe Color offre costanti predefinite per tredici colori standard. Colore Nero Blu Ciano Grigio scuro Grigio Verde Grigio chiaro Magenta Arancione Rosa Rosso Bianco Giallo Costante BLACK BLUE CYAN DARK_GRAY GRAY GREEN LIGHT_GRAY MAGENTA ORANGE PINK RED WHITE YELLOW

Nota: nelle versioni del jdk precedenti la 1.4, le costanti colore sono scritte in lettere minuscole; a partire dalla versione 1.4 possono essere scritte sia in caratteri minuscoli che maiuscoli.

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

La classe Color permette, inoltre, di definire colori personalizzati indicando la quantit delle componenti rosso, verde e blu presenti nel colore. Per creare un colore personalizzato si usa il costruttore:

public Color(int rosso, int verde, int blu)

dove rosso, verde e blu possono assumere valori interi compresi tra 0 e 255. Ad esempio Color verde_spento= new Color(0,128, 128);

Esempio: Impostare il colore per le operazioni di disegno


Il metodo paintComponent del precedente esempio si modifica cos:
public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLUE); g.drawRect(X, Y, W, H); g.setColor(new Color(200,150,75)); g.fillRect(X+110,Y,W,H); }

Figura 2. Due rettangoli disegnati in un pannello

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

Impostare il tipo di font: la classe Font


Per impostare un font occorre: 1. creare un oggetto della classe Font; 2. impostare il testo con il font scelto; 1. Creare un oggetto della classe Font La classe Font, del package java.awt, ha il seguente costruttore:

public Font(String nome, int stile, int dimensione) dove:

nome una stringa contenente il nome del carattere (Helvetica, Times


New Roman, ecc.); stile lo stile del carattere (grassetto, corsivo, ecc.), rappresentato mediante una costante intera della classe Font; dimensione la dimensione del carattere in punti (per esempio 12).

Il nome pu essere il nome di un carattere tipografico o il nome di un carattere logico. Infatti, poich non esiste un modo assoluto per sapere quali caratteri sono stati installati dallutente, awt definisce cinque nomi di font logici: SansSerif, Serif, Monospaced, Dialog, DialogInput, che sono sempre mappati su font effettivamente esistenti sulla macchina client. Ad esempio, in un sistema Windows, SansSerif mappato come Arial. Lo stile pu assumere uno dei seguenti valori: Font.PLAIN (normale), Font.BOLD (grassetto), Font.ITALIC (corsivo), Font.BOLD + Font.ITALIC (grassetto e corsivo). Per creare un oggetto della classe Font con carattere Helvetica, stile grassetto e dimensione 14 punti si scrive: Font helvb14= new Font(Helvetica,Font.BOLD,14); 2. Impostare il testo con il font scelto Si usa il metodo setFont della classe Graphics. Il font impostato sar usato per tutte le successive operazioni di disegno di testo. Ad esempio: g.setFont(helvb14);

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011

Esempio: Disegnare testo con il font specificato


Il metodo paintComponent del precedente esempio si modifica cos:
public static final int X= 100; public static final int Y= 100; public void paintComponent(Graphics g) { super.paintComponent(g); g.setFont(new Font("Helvetica",Font.BOLD,14)); g.drawString("Helvetica",X,Y); }

Figura 3. Una stringa disegnata in un pannello

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Autore: Cinzia Bocchi Ultimo aggiornamento: 10/10/2011