Laboratorio di IUM. Lezione 8. L'AWT che serve. Di Blasi Gianpiero - D.M.I. - Università di Catania



Documenti analoghi
7.4 Estrazione di materiale dal web

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida

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

Guida all uso di Java Diagrammi ER

Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e

Laboratorio Informatico di base A.A. 2013/2014 Dipartimento di Scienze Aziendali e Giuridiche Università della Calabria Dott.

CMS MUSEO&WEB. Mappe grafiche. Andrea Tempera (OTEBAC) 12 aprile 2010

Costruzione del layout in gino cms

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

LA GESTIONE DEI VEICOLI AZIENDALI CON MICROSOFT OUTLOOK

MANUALE D USO DELLA PIATTAFORMA ITCMS

Alla scoperta della nuova interfaccia di Office 2010

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

PowerPoint 2007 Le funzioni

Progetto INCOME. Manuale Utente Operatore Installazione

IMPORTAZIONE DI GRAFICI E TABELLE DA EXCEL A WORD

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

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

File, Modifica, Visualizza, Strumenti, Messaggio

Il calendario di Windows Vista

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

ARCHIVIAZIONE DOCUMENTI

Creare una nuova spedizione personalizzata.

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

DISPENSA PER MICROSOFT WORD 2010

PowerPoint. Guida introduttiva

Crotone, maggio Windows. Ing. Luigi Labonia

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

Soluzione dell esercizio del 2 Febbraio 2004

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Gestione Rapporti (Calcolo Aree)

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento:

OE-TL100 SOFTWARE PER RACCOLTA ORDINI MAGAZZINO

Programmazione a Oggetti Modulo B

L ACQUISIZIONE E LA GESTIONE DEI DOCUMENTI ELETTRONICI

OPERAZIONI SUL FILE SYSTEM OPERAZIONI SUL FILE SYSTEM

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

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

Esercizio data base "Biblioteca"

Microsoft Word. Nozioni di base

Concetto di Funzione e Procedura METODI in Java

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Pagina n. 1. Via Ficili n Tolentino (MC) Tel.: Fax: info@grupposis.it

Guida alla gestione dei File in Aulaweb 2.0

STRUMENTI DI PRESENTAZIONE MODULO 6

Database 1 biblioteca universitaria. Testo del quesito

Dropbox. Quando qualcuno ci invita a condivide con noi una cartella, veniamo avvisati via mail.

Database Manager Guida utente DMAN-IT-01/09/10

Lezioni di Laboratorio sui Data Base

DESCRIZIONE: Microsoft Office 2002 XP Corso Completo (Patente 60 giorni)

Utilizzo di Blue s. Avvio di Blue s C A P I T O L O 7. Come avviare il programma e inserire la password

Registratori di Cassa

1. Il Client Skype for Business

WORD 97 SCRIVERE UNA TESI DI LAUREA

Scuola Italiana del Middlebury College. Informazioni ed istruzioni per utilizzare MOODLE

5.6.1 REPORT, ESPORTAZIONE DI DATI

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Amministrazione sito web

Manuale per i redattori del sito web OttoInforma

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Panoramica: che cosa è necessario

ShellPictionary. Sistema operativo Microsoft Windows 98 o superiore Libreria SAPI e voce sintetica Casse audio

Stampa su moduli prestampati utilizzando Reflection for IBM 2011 o 2008

MANUALE PARCELLA FACILE PLUS INDICE

L amministratore di dominio

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Programmazione in Java Parte I: Fondamenti

SISTEMI MULTIAGENTE. Esercizio

Introduzione JDBC interfaccia java.sql driver caricare i driver

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

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Gestione dei file e delle cartelle

Visual basic base Lezione 01. L'ambiente di sviluppo

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

CdL in Medicina Veterinaria - STPA AA

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Manuale Utente Albo Pretorio GA

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Test di unità con JUnit4

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

Manuale Utente Amministrazione Trasparente GA

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Modulo 4: Ereditarietà, interfacce e clonazione

Punto Print Il programma per stampare. Documentazione Tecnica

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Integrazione InfiniteCRM - MailUp

Uso della posta elettronica Invio di un messaggio

GUIDA UTENTE BILLIARDS COUNTER (Vers )

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

finestra di manager di progetto o di struttura di progetto FIG.1

TRASMISSIONE RAPPORTO ARBITRALE IN FORMATO PDF

Transcript:

Di Blasi Gianpiero - D.M.I. - Università di Catania Laboratorio di IUM Lezione 8 L'AWT che serve

Cosa impareremo oggi? L'API per la stampa La clipboard di sistema Il Drag'n'Drop

L'API per la stampa (1) Il kit di sviluppo originale di Java non forniva alcun supporto per la stampa Dalle applet era impossibile stampare e dalle applicazioni era possibile solo con librerie esterne Con la versione 1.1 è stato introdotto un supporto minimale che in pratica era assolutamente inutile Dalla versione 1.2 fino alla 1.5 il supporto per la stampa è stato sempre più migliorato ed integrato con l'api Java2D diventando uno strumento potente e flessibile

L'API per la stampa (2) L'integrazione con Java2D ha reso il processo di stampa semplice come il disegno su un componente visuale Nonostante ciò è bene chiarire che realizzare un software di stampa è un lavoro complesso e difficile spesso è meglio appoggiarsi ad API progettate ad-hoc come JasperReport (http://jasperforge.org/sf/projects/jasperreports) Per generare una stampa bisogna effettuare due operazioni: fornire un oggetto che implementa l'interfaccia Printable avviare un lavoro di stampa

L'interfaccia Printable (1) L'interfaccia Printable rappresenta qualsiasi oggetto che deve essere stampabile Implementare tale interfaccia è molto semplice basta implementare il metodo int print(graphics g, PageFormat format, int page): descrive le operazioni di stampa dell'oggetto Tale metodo viene chiamato ogni volta che il motore di stampa deve formattare una pagina

L'interfaccia Printable (2) La stampa avviene disegnando sul contesto grafico g format indica invece le dimensioni della carta ed i valori dei margini page specifica la pagina da stampare (partendo da zero) Il valore restituito può essere PAGE_EXISTS oppure NO_SUCH_PAGE ed indica se ci sono o meno altre pagine da stampare

Avviare un lavoro di stampa (1) Per stampare bisogna utilizzare la classe PrinterJob ed: ottenere la classe PrinterJob tramite il metodo statico PrinterJob getprinterjob() impostare l'oggetto Printable nella PrinterJob tramite i metodi void setprintable(printable painter) void setprintable(printable painter, PageFormat format) visualizzare la finestra di dialogo per la stampa con i metodi boolean printdialog() boolean printdialog(printrequestattributeset attributes) avviare la stampa con i metodi void print(), void print(printrequestattributeset attributes)

Avviare un lavoro di stampa (2) Esempio PrinterJobSample

Avviare un lavoro di stampa (3) Osservazione: il lavoro di stampa non ha alcun modo per conoscere il conteggio esatto delle pagine per tale motivo nella finestra di stampa si visualizza un intervallo Pagine da 1 a 1 a breve vedremo come risolvere il problema tramite l'oggetto Book

La classe PageFormat (1) La classe PageFormat descrive dimensione ed orientamento della pagina da stampare Tutte le dimensioni sono misurate in punti Un punto è 1/72 di pollice (25,4 mm) per esempio il formato A4 è circa 595x842 punti Il sistema di stampa Java utilizza il punto per due ragioni: le dimensioni ed i margini della carta sono misurate in punti il punto è l'unità predefinita per tutti i contesti grafici di stampa

La classe PageFormat (2) Costruttore PageFormat() Metodi utili double getwidth(), double getheight(): restituisce le dimensioni della pagina double getimageablex(), double getimageabley(): restituisce le coordinate (x, y) del punto in alto a sinistra dell'area stampabile double getimageablewidth(), double getimageableheight(): restituisce le dimensioni dell'area stampabile int getorientation(), void setorientation(int orientation): restituisce/imposta l'orientamento della pagina

Impostazione della pagina (1) Per impostare gli attributi della pagina senza impostare altri attributi (e senza stampare) si possono utilizzare i metodi PageFormat pagedialog(pageformat page), PageFormat pagedialog(printrequestattributeset attributes): visualizzano una finestra di dialogo per impostare gli attributi della pagina Mentre per ottenere gli attributi di default si usa il metodo PageFormat defaultpage(): crea un nuovo PageFormat con gli attributi di default

Impostazione della pagina (2) Esempio PageSetupSample

Stampa di più pagine (1) Solitamente quando si stampa non si utilizza il semplice oggetto che implementa Printable, ma un oggetto che implementa Pageable Pageable rappresenta un insieme di pagine da stampare La piattaforma Java fornisce la classe Book che implementa Pageable

Stampa di più pagine (2) Un Book è un libro costituito da paragrafi ognuno dei quali è un oggetto Printable Ogni Printable può avere un diverso formato di pagina Per stampare un Book bisogna impostarlo nel lavoro di stampa tramite il metodo di PrinterJob void setpageable(pageable document): imposta l'oggetto Pageable nel lavoro di stampa

Stampa di più pagine (3) Costruttore Book() Metodi utili void append(printable painter, PageFormat page): aggiunge un Printable (di una pagina) alla fine del Book void append(printable painter, PageFormat page, int numpages): aggiunge un Printable (di numpages pagine) alla fine del Book void setpage(int pageindex, Printable painter, PageFormat page): imposta un Printable Continua...

Stampa di più pagine (4) Segue int getnumberofpages(): restituisce il numero di pagine di questo Book PageFormat getpageformat(int pageindex): restituisce il formato di una pagina Printable getprintable(int pageindex): restituisce un Printable Nota: adesso il PrinterJob sa quante pagine deve stampare

Stampa di più pagine (5) Esempio MultiPagePrintSample

Altri argomenti Anteprima di stampa Servizi di stampa Servizi di stampa di flusso Attributi di stampa Non verranno trattati ma sono molto utili ed interessanti (se ne consiglia lo studio individuale)

La clipboard di sistema (1) Uno dei meccanismi più utili di tutte le moderne GUI è sicuramente il copia&incolla Questa operazione è implementata tramite i cosiddetti appunti di sistema e tutto il lavoro è svolto gratuitamente dal SO sottostante JDK 1.0 non aveva alcun supporto a tale funzionalità A partire dalla versione 1.1 tale supporto è stato gradualmente inserito e migliorato

La clipboard di sistema (2) Adesso è possibile trasferire: testo, immagini, elenchi di file, ecc. tra un programma Java ed un programma nativo oggetti serializzati e remoti tra due programmi Java eseguiti su due JVM diverse qualsiasi oggetto all'interno della stessa JVM Noi ci occuperemo solo del primo caso (che è ovviamente il più interessante)

La classe DataFlavor (1) La classe DataFlavor descrive i tipi di dato che possono essere copiati negli appunti Solo i tipi definiti da DataFlavor possono essere copiati Attualmente la classe DataFlavor definisce una serie di oggetti statici per diversi tipi di dato

La classe DataFlavor (2) In particolare: l'oggetto DataFlavor.imageFlavor rappresenta un'immagine l'oggetto DataFlavor.javaFileListFlavor rappresenta una lista di file la stringa DataFlavor.javaJVMLocalObjectMimeType rappresenta un oggetto da trasferire nella stessa JVM la stringa DataFlavor.javaRemoteObjectMimeType rappresenta un oggetto da trasferire tra JVM differenti la stringa DataFlavor.javaSerializedObjectMimeType rappresenta un oggetto serializzabile l'oggetto DataFlavor.stringFlavor rappresenta una stringa

L'interfaccia Transferable (1) Se un oggetto vuole essere trasferito da un'applicazione ad un'altra deve implementare l'interfaccia Transferable Ovvero deve implementare i metodi Object gettransferdata(dataflavor flavor): restituisce l'oggetto che rappresenta il dato da trasferire DataFlavor[] gettransferdataflavors(): restituisce un array di oggetti DataFlavor che indicano che tipi di dato possono essere forniti boolean isdataflavorsupported(dataflavor flavor): comunica se questo tipo di dato è supportato

L'interfaccia Transferable (2) Java fornisce un'implementazione di Transferable per le stringhe Tale implementazione è la classe StringSelection Costruttore StringSelection(String data)

La classe Clipboard La classe Clipboard rappresenta gli appunti di sistema Per ottenere un'istanza di Clipboard bisogna ricorrere alla classe Toolkit Clipboard getsystemclipboard(): restituisce la clipboard di sistema Metodi utili Transferable getcontents(object requestor), void setcontents(transferable contents, ClipboardOwner owner): restituisce/imposta i dati nella clipboard

La clipboard di sistema (3) Esempi TextTransferSample ImageTransferSample

Il Drag'n'Drop Gli appunti di sistema fungono da intermediario nelle operazioni di copia&incolla tra due programmi Il Drag'n'Drop (letteralmente trascina e rilascia ) elimina l'intermediario e consente la comunicazione diretta tra due programmi Java fornisce un supporto elementare ma sufficiente per le operazioni di drag'n'drop

Operazioni di rilascio (1) Per prima cosa vediamo come un programma Java può diventare una destinazione di operazioni di rilascio Tutti i componenti AWT (e quindi gli Swing) possono essere una destinazione di operazioni di rilascio La prima cosa da fare è creare un oggetto DropTarget, ovvero il target di un'operazione di rilascio

Operazioni di rilascio (2) Per lavorare un DropTarget deve essere associato al componente destinazione ed ad un listener che ascolta le operazioni di rilascio Costruttori DropTarget(Component c, DropTargetListener dtl) DropTarget(Component c, int ops, DropTargetListener dtl) DropTarget(Component c, int ops, DropTargetListener dtl, boolean act) DropTarget(Component c, int ops, DropTargetListener dtl, boolean act, FlavorMap fm)

Operazioni di rilascio (3) Metodi utili void setactive(boolean isactive): attiva/disattiva la destinazione void setdefaultactions(int ops): imposta le operazioni di rilascio consentite sulla destinazione, secondo le costanti della classe DnDConstants ACTION_COPY: azione di copia ACTION_MOVE: azione di spostamento ACTION_COPY_OR_MOVE: azione di copia o spostamento ACTION_LINK: azione di creazione di un link simbolico ACTION_NONE: nessuna azione

Operazioni di rilascio (4) A questo punto bisogna implementare l'interfaccia DropTargetListener, ovvero implementare i metodi void dragenter(droptargetdragevent dtde) void dragover(droptargetdragevent dtde) void dragexit(droptargetevent dte): chiamati quando il mouse entra/si muove/esce da una zona rilasciabile void drop(droptargetdropevent dtde): chiamato quando l'utente rilascia il tasto del mouse void dropactionchanged(droptargetdragevent dtde): chiamato se l'utente modifica il gesto che ha iniziato l'azione di drag (pressione/rilascio di tasti CRTL, ALT, MELA, ecc.)

Operazioni di rilascio (5) Esempio DropSample

Operazioni di trascinamento (1) Adesso vediamo come un programma Java può diventare un'origine di operazioni di trascinamento Per rendere un componente un'origine di operazioni di trascinamento bisogna: ottenere un oggetto DragSource tramite il metodo statico DragSource getdefaultdragsource(): restituisce un'origine di drag associato con il SO sottostante configurare l'origine con il metodo DragGestureRecognizer createdefaultdraggesturerecognizer(component c, int actions, DragGestureListener dgl): crea un riconoscitore di operazioni di drag, associato al componente c

Operazioni di trascinamento (2) A questo punto bisogna implementare l'interfaccia DragGestureListener, ovvero il metodo void draggesturerecognized(draggestureevent dge): invocato quando il SO sottostante intercetta l'inizio di un'operazione di drag All'interno di questo metodo il programmatore deve: definire l'oggetto Transferable target dell'operazione di drag lanciare il metodo di DragGestureEvent void startdrag(cursor dragcursor, Transferable transferable, DragSourceListener dsl): avvia l'operazione di drag

Operazioni di trascinamento (3) Infine bisogna implementare l'interfaccia DragSourceListener, ovvero i metodi void dragenter(dragsourcedragevent dsde) void dragover(dragsourcedragevent dsde) void dragexit(dragsourceevent dse): chiamati quando il mouse entra/si muove/esce da una zona trascinabile void dragdropend(dragsourcedropevent dsde): chiamato quando l'utente rilascia il tasto del mouse void dropactionchanged(dragsourcedragevent dsde): chiamato se l'utente modifica il gesto che ha iniziato l'azione di drag (pressione/rilascio di tasti CRTL, ALT, MELA, ecc.)

Operazioni di trascinamento (4) Esempio DragSample