I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile



Documenti analoghi
Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

L interfaccia grafica in Java

Eventi di azione. // con interfaccia per eventi di azione

APPLICAZIONI & APPLET

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

Grafico della parabola

BorderLayout. 1 Gestori di Layout (guida visuale)

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

Grafica in Java. introduzione

Programmazione Java: Interfacce grafiche (GUI)

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Ottava Esercitazione. introduzione ai thread java mutua esclusione

7.4 Estrazione di materiale dal web

Introduzione al package grafico Swing

Corso sul linguaggio Java

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

L interfaccia grafica con Java

Programmazione a Oggetti Lezione 10. Ereditarieta

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Alessandro De Luca. Lezione, 13 maggio 2015

Programmazione Java (Applicazioni e Applet )

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Java: Compilatore e Interprete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

APPLICAZIONI & APPLET

Application VS Applet

Java: la libreria delle classi

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Interazioni col mondo: eventi

Java Virtual Machine

Le variabili. Olga Scotti

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE E APPLICAZIONI WEB.

Tale attività non è descritta in questa dispensa

PG5 Starter Training PG5 Core e WebEditor 8 Daniel Ernst EN Stefano Peracchi IT

Caricare un video Ecomovies.it

Comandi principali del linguaggio HTML (Hyper Text Markup Language)

GESTIONE DEI PROCESSI

Corso sul linguaggio Java

Gestione Rapporti (Calcolo Aree)

HTML 6. I frame. Sintassi di base. I frame e DOCTYPE FRAME. ...head... <FRAMESET lista_attributi> <FRAME SRC= URL lista_attributi>

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Applicazioni grafiche e finestre

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Linea guida di inserimento dati Antiriciclaggio-XP DM-141

Microsoft Word. Nozioni di base

Capitolo 4 Pianificazione e Sviluppo di Web Part

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Le L z e ione n e d i d V isu s a u l B asi s c Prof.ssa Paola Goi 1

STAMPA UNIONE DI WORD

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

UML Diagrammi delle classi. UML Diagramma classi 1

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Applet. Contenuti secondo modulo. Linguaggi di Programmazione II. Dove e come trovarmi. Introduzione. Sito Web

CERTIFICATI DIGITALI. Manuale Utente

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Siti interattivi e dinamici. in poche pagine

PRODUZIONE PAGELLE IN FORMATO PDF

Creare un sito Multilingua con Joomla 1.6

Alcuni Design Pattern in Java

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Il calcolatore - Applicazioni

Java Interfaccia Grafica

Esercitazione del Corso di Informatica Grafica. Strumenti per scrivere applicazioni in JAVA

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Interfacce grafiche. Una GUI (Graphic User Interface) contiene vari componenti: bottoni, etichette, immagini...

Paradigmi di programmazione (sperimentazioni)

Impostare e gestire correttamente i Layout per stampare da PLOTTER

Guida alla personalizzazione dei documenti in formato Open Document (ODT)

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

Programmazione in rete e laboratorio

Manuale d uso per la raccolta: Monitoraggio del servizio di Maggior Tutela

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

COGNOME.NOME. Matricola

Layout dell area di lavoro

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Integrazione InfiniteCRM - MailUp

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Gara con presentazione di offerta valutata secondo il criterio dell offerta economicamente più vantaggiosa (gara in due tempi)

Esercitazione n 4. Obiettivi

filrbox Guida all uso dell applicazione DESKTOP Pag. 1 di 27

Modulo 4: Ereditarietà, interfacce e clonazione

Guida all uso di Java Diagrammi ER

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Andrea Maioli Instant Developer: guida all uso

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Indice generale. Il BACK-END...3 COME CONFIGURARE JOOMLA...4 Sito...4 Locale...5 Contenuti...5

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

STRUMENTI PER L ACCESSIBILITÀ DEL COMPUTER.

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Transcript:

I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche. Un oggetto di tipo Canvas è semplicemente una porzione rettangolare di schermo, una specie di pannello che possiede un proprio metodo paint() che, pur diverso dall omonimo metodo di un Applet, usa anch esso oggetti della classe Graphics ed è richiamato dal sistema in fase di creazione e aggiornamento in modo che l oggetto Graphics associato possa aggiornarsi. Una istanza della classe Canvas non è molto utile: riceve eventi da tastiera e da mouse, ma non li tratta, ed il metodo paint() non disegna alcunché. Generalmente la classe Canvas è usata solo come base per subclassi, che possono generare oggetti più utili: una subclasse di Canvas generalmente farà almeno un override del metodo paint() e possibilmente anche dei metodi di gestione degli eventi come quelli del mouse e della tastiera. Quando il contenuto del canvas dovrà essere modificato al di fuori del metodo paint(), sarà possibile richiamare il contesto grafico con i metodi getgraphics(). Vedremo come questi metodi possono essere usati per i canvas creando ad esempio un bottone di forma personalizzata e colore modificato da eventi Pur se è possibile disegnare direttamente in ogni Component, ed è comune disegnare direttamente su applet e finestre, è di solito meglio collocare ogni operazione di disegno nelle sottoclassi del Canvas: nei casi in cui sia necessario disegnare su un applet che contiene anche dei bottoni, l'uso di un canvas è pressochè inevitabile. // esempio di Applicazione con uso GUI (necessita una finestra o JFrame) // Per disegnare uso di classe che eredita da Canvas public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile Container c = f.getcontentpane(); // recupera il "muro grezzo" Disegno d = new Disegno(); // classe esterna che eredita da Canvas c.add (d); f.setsize(300,180); // per impostare le dimensioni e la posizione: misure in pixel f.setlocation(200,100); // (0,0) angolo sup. sin. f.setresizable(true); // per ridimensionare (per default non ridimensionabili) con mouse f.setvisible(true); // mostra il frame (dimensioni 300x150) f.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); public static void main(string [] args) { Graf ogg = new Graf(); // fine classe principale

// classe esterna eventualmente nello stesso file Graf.java class Disegno extends Canvas { g.setcolor(color.red); g.fillrect(20,20,100,80); // rettangolo pieno g.setcolor(color.blue); g.drawrect(30,30,80,60); // linea rettangolare g.setcolor(color.black); g.drawstring("ciao", 50,60); Font f1 = new Font("Times", Font.PLAIN, 20); g.setfont(f1); g.drawstring("ciao", 200,60); // cambiare font // per recuperare le proprietà del font f1 = g.getfont(); int size = f1.getsize(); int style = f1.getstyle(); String name = f1.getname(); g.drawstring("font di dimensioni " + size, 50,140); System.out.println("Font di dimensioni "+ size +" stile " + style + " e nome " + name); // fine classe che eredita da Canvas Esercizio: disegnare automobile Creare un Applet che disegni un automobile in modo stilizzato: 1) direttamente nella finestra del browser. 2) con un canvas in una finestra separata. Si costruisca una classe AutoC con gli opportuni metodi grafici già usati per disegnarla direttamente nella finestra del browser. (con soluzione) nb: applicazione con disegno su JPanel della stessa automobile stilizzata

Soluzione: esempio di Applet che usa canvas in una finestra separata import java.applet.*; public class AutoC extends JApplet { Auto A; public void init() { JFrame f1 = new JFrame ("Disegna auto"); A = new Auto(); // istanza che eredita da Canvas f1.setsize (500, 420); f1.setlocation (50,50); f1.setresizable(true); // con mouse ridimensionabile Container c =f1.getcontentpane(); c.add(a); f1.setvisible(true); class Auto extends Canvas { Font f = new Font("Times Roman", Font.BOLD, 20); g.setfont(f); g.filloval(120, 220, 60,60); // una ruota piena g.filloval(320, 220, 60,60); // altra ruota piena g.setcolor(color.blue); // carrozzeria blu g.drawrect(50, 150, 400, 70); g.drawline(170,150,200,100); g.drawline(330,150,300,100); g.drawline(300,100,200,100); g.setcolor(color.yellow); // luci gialle g.fillrect(50, 170, 20, 30); g.setcolor(color.red); // luci rosse g.fillrect(430, 150, 20, 20); g.setcolor(color.cyan); // testo cyan g.drawstring("automobile", 200, 350); Codice HTML: <html> <head><title>disegno di un Auto </title></head> <body> <object code ="AutoC.class" width= "500" height= "150">></object> </body> </html> nb: per eseguire la pagina html con opzione Run in JCreator, salvare tale pagina web nella stessa cartella del bytecode (classes).

Esercizio: Disegno di un auto in altra finestra alla pressione di un pulsante (evento della GUI) Con codice HTML: <html> <head> <title>disegno di un Auto come evento </title> </head> <body> <object code ="Autoe.class" width = "350" height ="70" > </object> </body> </html> // Applet Autoe.java // esempio di Applet con gestione eventi della GUI: creazione di eventi personalizzati // Uso canvas import java.applet.*; import java.awt.event.*; public class Autoe extends JApplet { Auto A; public void init() { JButton B = new JButton ("Disegna un auto"); GestiscePulsante A1 = new GestiscePulsante(); // crea ascoltatore B.addActionListener (A1); add(b); // lega la classe di ascolto all origine dell evento: cioè // il pulsante B public void Disegna() { JFrame f1 = new JFrame("Disegna auto"); A = new Auto(); f1.setsize (300, 200); f1.setlocation (50,50); f1.setresizable(true); // con mouse ridimensionabile Container c = f1.getcontentpane(); // recupera il "muro grezzo" c.add(a); f1.setvisible(true);

// definizione classe d'ascolto interna cioè innestata non statica private class GestiscePulsante implements ActionListener{ // interfaccia per eventi di azione public void actionperformed (ActionEvent e) { // unico metodo da ridefinire Disegna(); // fine classe d'ascolto class Auto extends Canvas { // classe esterna per disegnare auto Font f = new Font("Times Roman", Font.BOLD, 20); // tipo, aspetto, dimensione carattere g.setfont(f); g.filloval(120, 220, 60,60); // una ruota piena g.filloval(320, 220, 60,60); // altra ruota piena g.setcolor(color.blue); // carrozzeria blu g.drawrect(50, 150, 400, 70); g.drawline(170,150,200,100); g.drawline(330,150,300,100); g.drawline(300,100,200,100); g.setcolor(color.yellow); // luci gialle g.fillrect(50, 170, 20, 30); g.setcolor(color.red); // luci rosse g.fillrect(430, 150, 20, 20); g.setcolor(color.cyan); // testo cyan g.drawstring("automobile", 200, 350); Classi innestate e interne: definizione Una classe innestata non è altro che una classe che viene definita all interno di un altra classe. Il vantaggio di implementare una classe all interno di un altra, riguarda principalmente il risparmio di codice. Infatti, la classe innestata ha accesso alle variabili di istanza della classe in cui è innestata. N.B. : se compiliamo una classe che contiene una classe innestata, saranno creati due file: "nomeclasseesterna.class" e "nomeclasseesterna$nomeclasseinnestata.class". N.B. : fino alla versione 1.3 di Java, il termine classe innestata non era stato ancora adottato. Si parlava invece di classe interna ( inner class ). Dalla versione 1.4 in poi, la Sun ha deciso di sostituire il termine classe interna, con il termine classe innestata o classe annidata ( nested class ). Il termine classe interna deve ora essere utilizzato solo per le classi innestate che non sono dichiarate statiche. In realtà la stragrande maggior parte delle volte si utilizzano classi interne.