7. Arricchire un Frame Non possiamo disegnare, scrivere o aggiungere Componenti direttamente al Frame. Tutto va inserito dentro il “contentPane”
8.
9.
10. La classe Graphics ed il metodo paintComponent () ● Chi chiama paintComponent ? – viene chiamato automaticamente ogni qualvolta sia necessario. Non deve essere chiamato manualmente ● Per forzarne la chiamata usare il metodo: – void repaint (): forza il ridisegno della finestra ● Quali azioni attivano il paintComponent ? – tutto ciò che provoca un ridisegno della finestra (ridimensionamento della finestra, riduzione ad icona, massimizzazione, sovrapposizione di finestre, ecc.)
11. La classe Graphics ed il metodo paintComponent () ● Per lavorare il paintComponent ha bisogno di un oggetto Graphics ● Esso è la sua “memoria” e il suo “libretto di istruzioni” per eseguire i comandi di disegno che chiederemo nel nostro codice ● Un Graphics (contesto grafico) viene creato dal JComponent appena deve essere disegnato la prima volta
12. La classe Graphics ed il metodo paintComponent() ● Graphics mantiene le seguenti informazioni: – l'oggetto sul quale si disegna – il sistema di coordinate adottato per disegnare – il colore di foreground (colore con cui disegnare) void setColor(Color c) – il font usato per le stringhe e le sue proprietà – il “clip” (ritaglio) – la modalità di disegno (Paint o XOR) – ……… .
19. Disegni Per disegnare un segmento: – void drawLine (int x1, int y1, int x2, int y2): disegna una linea continua Per disegnare un punto: – void drawLine (int x1, int y1, int x1, int y1): disegna un punto
20. Disegni Per disegnare un poligono: – void drawPolygon (int[] x, int[] y, int npoints): ● Per disegnare una spezzata: – void drawPolyline (int[] xCoord, int[] yCoord, int npoints) ● Per disegnare un arco: – void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle)
21. Disegni Per disegnare rettangoli – void drawRect (int x, int y, int width, int height): Per disegnare Ovali – void drawOval (int x, int y, int width, int height): Per disegnare rettangoli arrotondati: – void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight)
22. Considerazioni finali sulle primitive di disegno Esistono una serie di metodi analoghi ai precedenti per il riempimento di forme: – void fillPolygon (Polygon p) – void fillPolygon (int[] x, int[] y, int npoints) – void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) – void fillRect (int x, int y, int width, int height) – void fillOval (int x, int y, int width, int height) – void fillRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight)
23.
24.
25. Gestore degli eventi Applicativo Evento Azione Devo eseguire l’azione associata al bottone Chiama l’ascoltatore Esegue azione Listener