Due applicazioni complete in Java

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Due applicazioni complete in Java"

Transcript

1 CAPITOLO 19 Due applicazioni complete in Java In conclusione del volume sono presentate due applicazioni la cui complessità va oltre quella delle classi finora considerate e che, pur con le dovute limitazioni, costituiscono due esempi di applicazioni reali. La prima applicazione permette di eseguire operazioni di filtraggio su immagini in formato GIF o JPEG. Le operazioni possibili, implementate tramite le classi introdotte nel Capitolo 9, sono quelle di regolazione della messa a fuoco (blur, sharpen), di rilievo dei contorni, di inversione o eliminazione di singole componenti RGB, di rotazione, di conversione in bianco e nero. L applicazione prevede inoltre la possibilità di salvare l immagine filtrata in formato JPEG. La seconda applicazione fornisce un esempio ridotto di editor grafico, con il quale è possibile tracciare e rimuovere forme geometriche regolari, selezionare spessori di linea e colori di tracciatura, definire campiture, registrare i disegni prodotti per successive modifiche Un applicazione per il filtraggio di immagini Il problema affrontato concerne operazioni che sono tipicamente legate all elaborazione di immagini. Problema Costruire un applicazione basata su menu di comandi, che permetta di acquisire immagini archiviate su file e di elaborarle mediante operazioni di filtraggio predefinite oppure specificate dall utente.

2 50 CAPITOLO 19 L applicazione Java FiltraggioImmagini effettua operazioni di filtraggio su immagini in formato GIF o JPEG. Al lancio dell esecuzione del programma, appare una finestra vuota con tre menu nella parte superiore sinistra: il menu File, il menu ConvolveOp e il menu Altri Filtraggi. Il primo menu gestisce il caricamento e il salvataggio delle immagini, nonché la chiusura dell applicazione. Il secondo menu elenca i tipi di filtraggio della classe ConvolveOp applicabili all immagine visualizzata sullo schermo: Sharpen: aumenta la messa a fuoco dell immagine, rendendola più nitida; Edge: mette in evidenza i contorni dell immagine; Blur: diminuisce la messa a fuoco dell immagine, sfocandola; Emboss: visualizza una versione in rilievo dell immagine; Originale: visualizza nuovamente l ultima immagine caricata; Personalizzata: applica un filtraggio definito dall utente, il quale deve fornire i nove valori di tipo float della relativa matrice di convoluzione in una seconda finestra. Il terzo menu elenca i tipi di filtraggio e le trasformazioni affini che sono applicabili all immagine visualizzata sullo schermo: Colori...: eliminazione o rimozione delle componenti di colore RGB; Ruota a sx: rotazione di novanta gradi in senso antiorario dell immagine; Ruota a dx: rotazione di novanta gradi in senso orario dell immagine; B/W: conversione in bianco e nero dell immagine. L applicazione è composta (cfr: Figura 19.1) dalle classi: FiltraggioImmagini, che gestisce la finestra principale in cui appare l immagine da filtrare e gli eventi generati dai componenti in essa inseriti; ImagePanel, per gestire il pannello inserito nella finestra principale contenente l immagine da filtrare; InputDlg, che gestisce la finestra secondaria necessaria per la definizione di filtraggi personalizzati; ColorDlg, che gestisce la finestra secondaria dedicata alla selezione delle componenti RGB da eliminare o da invertire; IOImmagini, che fornisce alcuni metodi per l apertura e il salvataggio di immagini e il cui codice è riportato nell Appendice C. import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import java.awt.color.colorspace; import javax.swing.*; public class FiltraggioImmagini extends JFrame { private AscMenu ascmenu = new AscMenu(); private InputDlg inmat = new InputDlg (this this); private ColorDlg colmat = new ColorDlg (this this); private ImagePanel imagepanel = null;

3 DUE APPLICAZIONI COMPLETE IN JAVA 51 Figura 19.1 Classi dell applicazione FiltraggioImmagini. private BufferedImage bimg0 = null, bimg1 = null; private String comm = ; private Graphics2D imagecontext0, imagecontext1; private String[][] menuelem = { { Apri, Salva, Esci, { Sharpen, Edge, Blur, Emboss, Annulla Trasf, Personalizza, { Colori..., Ruota a sx, Ruota a dx, B/W ; private String[] menuheader = { File, ConvolveOp, Altri Filtraggi ; static float[][] kernels = { { 0.0f, 1.0f, 0.0f, 1.0f, 5.0f, 1.0f, 0.0f, 1.0f, 0.0f, { 0.0f, 1.0f, 0.0f, 1.0f, 4.0f, 1.0f, 0.0f, 1.0f, 0.0f, { 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, { 2.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 2.0f ; float[] newker = new float[9]; int[] selcolors = new int[3]; public FiltraggioImmagini (int hsize, int vsize) { super ( Filtraggio Immagini ); setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); getcontentpane().setlayout (new BorderLayout()); imagepanel = new ImagePanel (hsize, vsize);

4 52 CAPITOLO 19 getcontentpane().add (imagepanel, BorderLayout.CENTER); setsize (hsize, vsize); JMenuBar barramenu = new JMenuBar(); setjmenubar (barramenu); for (int i = 0; i < menuheader.length; i++) { JMenu menu = new JMenu (menuheader[i]); for (int j = 0; j < menuelem[i].length; j++) { JMenuItem mitem = new JMenuItem (menuelem[i][j]); menu.add (mitem); mitem.addactionlistener (ascmenu); barramenu.add (menu); int w = getwidth(); int h = getheight(); bimg0 = new BufferedImage (w, h, BufferedImage.TYPE_INT_RGB); imagecontext0 = bimg0.creategraphics(); bimg1 = new BufferedImage (w, h, BufferedImage.TYPE_INT_RGB); imagecontext1 = bimg1.creategraphics(); setvisible (true true); public BufferedImage makeconv (String cmd, BufferedImage img) { int i, j = 0; for(i = 0; i < 4; i++) if (cmd.equals (menuelem[1][i])) j = i; Kernel ker = new Kernel (3, 3, kernels[j]); ConvolveOp convop = new ConvolveOp(ker, ConvolveOp.EDGE_NO_OP, null); return convop.filter (img, null); public static void main (String[] args) { FiltraggioImmagini winmenu = new FiltraggioImmagini (640, 480); public class AscMenu implements ActionListener { public void actionperformed (ActionEvent ev) { comm = ev.getactioncommand(); if (comm.equals ( Esci )) System.exit (0); else if (comm.equals ( Salva )) IOImmagini.writeImage (imagepanel.getimage()); else if (comm.equals ( Apri )) { imagecontext0.drawimage (IOImmagini.readImage(), 0, 0, null); imagepanel.changeimage (bimg0); else if (comm.equals ( Personalizza )) { inmat.setvisible (true true);

5 DUE APPLICAZIONI COMPLETE IN JAVA 53 Kernel kernel0 = new Kernel (3, 3, newker); ConvolveOp newop = new ConvolveOp (kernel0, ConvolveOp.EDGE_NO_OP, null); imagepanel.changeimage (newop.filter (bimg0, null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else if (comm.equals ( Annulla Trasf )) { imagepanel.changeimage (bimg1); imagecontext0.drawimage (bimg1, 0, 0, null); else if (comm.equals ( Colori... )) { colmat.setvisible (true true); short[] invert = new short[256]; short[] straight = new short[256]; short[] zero = new short[256]; for (int i = 0; i < 256; i++) { invert[i] = (short short) (255 i); straight[i] = (short short) i; zero[i] = (short short) 0; short[][] colors = { straight, invert, zero ; short[][] colortr = { colors[selcolors[0]], colors[selcolors[1]], colors[selcolors[2]] ; LookupOp ColorOp = new LookupOp ( new ShortLookupTable (0, colortr), null); imagepanel.changeimage (ColorOp.filter (bimg0, null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else if (comm.equals ( Ruota a dx )) { int w = bimg0.getwidth() / 2; int h = bimg0.getheight() / 2; AffineTransform at = AffineTransform. getrotateinstance (Math.toRadians (90), w,h); if (w > h) at.translate (w h, 0); AffineTransformOp RotR = new AffineTransformOp ( at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); imagepanel.changeimage (RotR.filter (bimg0,null null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else if (comm.equals ( Ruota a sx )) { int w = bimg0.getwidth() / 2; int h = bimg0.getheight() / 2;

6 54 CAPITOLO 19 AffineTransform at = AffineTransform. getrotateinstance (Math.toRadians ( 90), w, h); if (w > h) at.translate (h w, 0); AffineTransformOp RotL = new AffineTransformOp ( at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); imagepanel.changeimage (RotL.filter (bimg0,null null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else if (comm.equals ( B/W )) { AColorConvertOp grayop = new ColorConvertOp ( ColorSpace.getInstance (ColorSpace.CD_GRAY), null); imagepanel.changeimage (grayop.filter (bimg0,null null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else { imagepanel.changeimage (makeconv (comm, bimg0)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); Come già accennato, la classe FiltraggioImmagini è preposta alla gestione della finestra principale dell applicazione, nella quale appaiono le immagini da filtrare e quelle risultanti dai filtraggi. La classe interna AscMenu, che implementa l interfaccia ActionListener, gestisce gli eventi dei menu. Più precisamente, essa determina su quale componente di un menu sia stato premuto il pulsante del mouse per attivare la corrispondente azione da intraprendere. Le variabili della classe FiltraggioImmagini definiscono: le immagini bimg0 e bimg1 della classe BufferedImage, a cui sono associati i contesti grafici imagecontext0 e imagecontext1 della classe Graphics2D; un pannello imagepanel contenente l immagine da filtrare, che verrà inserito nel frame; le finestre di dialogo inmat di classe InputDlg, per la definizione di un filtraggio di convoluzione personalizzato, e colmat di classe ColorDlg per la definizione di un filtraggio dei colori RGB; la stringa comm, che descrive l azione da intraprendere in seguito alla selezione di un comando dai menu; l ascoltatore dei menu, denominato ascmenu, modellato dalla classe interna AscMenu. Dichiarazioni private AscMenu ascmenu = new AscMenu(); private InputDlg inmat = new InputDlg (this this); private ColorDlg colmat = new ColorDlg (this this); private ImagePanel imagepanel = null; private BufferedImage bimg0 = null, bimg1 = null; private String comm = ; private Graphics2D imagecontext0, imagecontext1;

7 DUE APPLICAZIONI COMPLETE IN JAVA 55 Alle precedenti variabili si aggiungono l array menuheader, contenente i titoli dei menu dell applicazione, e la matrice menuelem, le cui tre righe includono gli elementi di ognuno dei menu citati. Dichiarazioni private String[] menuheader = { File, ConvolveOp, Altri Filtraggi ; private String[][] menuelem = { { Apri, Salva, Esci, { Sharpen, Edge, Blur, Emboss, Annulla Trasf, Personalizza, { Colori..., Ruota a sx, Ruota a dx, B/W ; Per ciascuno dei filtraggi di convoluzione predefiniti ( Sharpen, Edge, Blur, Emboss ), inoltre, la corrispondente matrice 3 3 di convoluzione è data dalla riga di pari posizione della matrice kernels. L array newker è usato come matrice di convoluzione relativa al filtraggio di convoluzione personalizzato. L array selcolors è usato per l impostazione di un filtraggio dei colori RGB. Dichiarazioni static float[][] kernels = { { 0.0f, 1.0f, 0.0f, 1.0f, 5.0f, 1.0f, 0.0f, 1.0f, 0.0f, { 0.0f, 1.0f, 0.0f, 1.0f, 4.0f, 1.0f, 0.0f, 1.0f, 0.0f, { 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, 1.f/9.f, { 2.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 2.0f ; float[] newker = new float[9]; int[] selcolors = new int[3]; Il costruttore FiltraggioImmagini() definisce un frame di hsize vsize pixel con gestore di tipo BorderLayout. La chiusura della finestra provoca anche la chiusura dell applicazione, come stabilito dalla costante EXIT_ON_CLOSE. Al centro della finestra viene inserito il pannello imagepanel di dimensione hsize vsize, che occuperà tutta la superficie del frame trattandosi dell unico componente in esso inserito. Creazione del frame public FiltraggioImmagini(int int hsize, int vsize) { super ( Filtraggio Immagini ); setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); getcontentpane().setlayout (new BorderLayout()); imagepanel = new ImagePanel (hsize, vsize); getcontentpane().add (imagepanel,borderlayout.center); setsize (hsize, vsize);

8 56 CAPITOLO 19 Successivamente il costruttore FiltraggioImmagini() definisce la barra dei menu barramenu di tipo JMenuBar e i relativi menu: il menu File, che contiene i comandi Apri e Salva per il caricamento e il salvataggio delle immagini, ai quali si aggiunge il comando Esci per la chiusura dell applicazione; il menu ConvolveOp, con i comandi delle operazioni di filtraggio Sharpen, Edge, Blur, Emboss, Annulla Trasf, Personalizza. il menu AltriFiltraggi, contenente i comandi Colori..., Ruota a dx, Ruota a sx, B/W. La creazione e l inserimento dei menu nella barra menu è a carico del ciclo for esterno: ad ogni iterazione esso crea un oggetto di tipo JMenu il cui titolo è prelevato dall array menuheader. Nel menu sono inseriti i relativi comandi, le cui stringhe rappresentative sono lette da una riga della matrice menuelem tramite il ciclo for interno; questo si preoccupa anche di designare l ascoltatore ascmenu come ascoltatore dell elemento inserito. Il menu è infine introdotto nella barra dei menu, che è inizialmente associata al frame tramite il metodo setjmenubar(). Definizione dei menu public FiltraggioImmagini (int hsize, int vsize) { JMenuBar barramenu = new JMenuBar(); setjmenubar (barramenu); for (int i = 0; i < menuheader.length; i++) { JMenu menu = new JMenu (menuheader[i]); for (int j = 0; j < menuelem[i].length; j++) { JMenuItem mitem = new JMenuItem (menuelem[i][j]); menu.add (mitem); mitem.addactionlistener (ascmenu); barramenu.add (menu); Le immagini bimg0 e bimg1 vengono quindi inizializzate, impostando le loro dimensioni alle dimensioni w e h della finestra, e viene definito il contesto grafico imagecontext dell immagine bimg0 per poter disegnare su di essa con il metodo drawimage(). Il costruttore termina rendendo visibile la finestra con il metodo setvisible(). Si sottolinea che bimg0 individua l immagine corrente, che è visualizzata anche all interno della finestra del frame; bimg1 contiene invece l immagine precedente all ultimo filtraggio effettuato, nel caso in cui sia stata compiuta almeno un operazione, altrimenti coincide con bimg0. Impostazione delle immagini bimg0 e bimg1 public FiltraggioImmagini (int hsize, int vsize) { int w = getwidth(); int h = getheight();

9 DUE APPLICAZIONI COMPLETE IN JAVA 57 bimg0 = new BufferedImage (w, h, BufferedImage.TYPE_INT_RGB); imagecontext0 = bimg0.creategraphics(); bimg1 = new BufferedImage (w, h, BufferedImage.TYPE_INT_RGB); imagecontext1 = bimg1.creategraphics(); setvisible (true true); Il successivo metodo makeconv() è un metodo di servizio delegato al filtraggio di un immagine img di tipo BufferedImage, operato mediante una matrice di convoluzione che è determinata in base al valore del parametro cmd. Il ciclo for iniziale verifica se la stringa cmd sia uguale ad una delle stringhe Sharpen, Edge, Blur, Emboss memorizzate nella seconda riga dell array menuelem, assegnando in caso positivo alla variabile j l indice di colonna della stringa trovata. L indice j individua nella matrice kernels la matrice di convoluzione da usare per attuare il filtraggio prescelto: tramite l array kernels[j] viene costruito un oggetto di classe ConvolveOp al quale andrà applicato il metodo filter() per la restituzione della trasformazione dell immagine img. Metodo makeconv() public BufferedImage makeconv (String cmd, BufferedImage img) { int i, j = 0; for(i = 0; i < 4; i++) if (cmd.equals (menuelem[1][i])) j = i; Kernel ker = new Kernel (3, 3, kernels[j]); ConvolveOp convop = new ConvolveOp(ker, ConvolveOp.EDGE_NO_OP, null); return convop.filter (img, null); L ascoltatore AscMenu gestisce gli eventi generati dai menu dell applicazione nei modi indicati dal metodo actionperformed(). Esso determina il comando selezionato dai menu tramite il metodo getactioncommand() e agisce di conseguenza. Ad ogni invocazione del metodo actionperformed() l attributo comm viene aggiornato all ultimo comando selezionato dal metodo getactioncommand(). Qualora il valore di comm sia Esci, viene invocato il metodo exit() per la chiusura dell applicazione. Se il valore di comm è Salva, viene invocato il metodo statico writeimage() della classe IOImmagini al fine di salvare l immagine correntemente visualizzata nella finestra del frame (per maggiori informazioni sulla classe IOImmagini si veda l Appendice C). Tale immagine è fornita dal metodo getimage() della classe ImagePanel. Nel caso in cui il valore di comm sia Apri, viene invece invocato il metodo statico readimage() della classe IOImmagini che fornisce l immagine da visualizzare. L immagine caricata è assegnata a bimg0 disegnandola nel contesto grafico di bimg0 tramite il metodo drawimage(). L immagine bimg0 viene successivamente copiata nel pannello imagepanel per la visualizzazione all interno della finestra. Metodo actionperformed() public void actionperformed (ActionEvent ev) { comm = ev.getactioncommand(); if (comm.equals ( Esci )) System.exit (0);

10 58 CAPITOLO 19 else if (comm.equals ( Salva )) IOImmagini.writeImage (imagepanel.getimage()); else if (comm.equals ( Apri )) { imagecontext0.drawimage (IOImmagini.readImage(), 0, 0, null); imagepanel.changeimage (bimg0); else... Nel caso invece di un operazione personalizzata, caratterizzata dal valore Personalizza della stringa comm, viene visualizzata con il metodo setvisible() la finestra ausiliaria inmat necessaria per l inserimento dei valori che definiscono l operazione di filtraggio da compiere. Tali valori sono trascritti nell array newker, il quale è usato per la definizione dell operatore newop di filtraggio dell immagine bimg0. Il risultato del filtraggio è sfruttato per modificare l immagine visualizzata nel frame tramite il metodo changeimage() ed è anche copiato nell immagine bimg0 dopo che questa è stata trasferita in bimg1. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else if (comm.equals ( Personalizza )) { inmat.setvisible (true true); Kernel kernel0 = new Kernel (3, 3, newker); ConvolveOp newop = new ConvolveOp (kernel0, ConvolveOp.EDGE_NO_OP, null); imagepanel.changeimage (newop.filter (bimg0, null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else... Se invece il valore di comm è Annulla Trasf, l immagine bimg1 viene copiata sia in bimg0 che nel pannello imagepanel tramite il metodo changeimage(), visualizzandola contemporaneamente nel frame. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else if (comm.equals ( Annulla Trasf )) { imagepanel.changeimage (bimg1); imagecontext0.drawimage (bimg1, 0, 0, null); else... Ulteriore possibilità è che il valore di comm sia Colori.... In questa evenienza il metodo setvisible() è usato per visualizzare la finestra ausiliaria colmat, necessaria sia per la selezione delle componenti RGB da eliminare o da invertire nell immagine correntemente dispo-

11 DUE APPLICAZIONI COMPLETE IN JAVA 59 nibile, sia per l impostazione dell array selcolors da usare per la selezione dei tre array straight, invert, zero richiesti nella costruzione dell array colortr. Quest ultimo è impiegato per la definizione dell operatore ColorOp di filtraggio dell immagine bimg0. Al solito, il risultato del filtraggio è usato tanto per modificare l immagine visualizzata nel frame tramite il metodo changeimage() quanto per essere copiato nell immagine bimg0 dopo che questa è trasferita in bimg1. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else if (comm.equals ( Colori... )) { colmat.setvisible (true true); short[] invert = new short[256]; short[] straight = new short[256]; short[] zero = new short[256]; for (int i = 0; i < 256; i++) { invert[i] = (short short) (255 i); straight[i] = (short short) i; zero[i] = (short short) 0; short[][] colors = { straight, invert, zero ; short[][] colortr = { colors[selcolors[0]], colors[selcolors[1]], colors[selcolors[2]] ; LookupOp ColorOp = new LookupOp ( new ShortLookupTable (0, colortr), null); imagepanel.changeimage (ColorOp.filter (bimg0, null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else... Altri valori possibili per la stringa comm rappresentano i comandi Ruota a dx e Ruota a sx. Nel primo caso vengono assegnate alle variabili w, h le dimensioni dimezzate dell immagine, dopo di che si costruisce una rotazione at di 90 gradi con origine nel centro dell immagine medesima. Viene quindi definito l operatore RotR di classe AffineTransformOp ed è effettuato il filtraggio dell immagine. Il risultato modifica l immagine del frame tramite il metodo changeimage() ed è copiato in bimg0 dopo che questa è trasferita in bimg1. Nel caso in cui il valore di comm sia Ruota a sx la procedura è del tutto analoga alla precedente, fatta salva la rotazione che è ora di 90 gradi. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else if (comm.equals ( Ruota a dx )) { int w = bimg0.getwidth() / 2; int h = bimg0.getheight() / 2;

12 60 CAPITOLO 19 AffineTransform at = AffineTransform. getrotateinstance (Math.toRadians (90), w,h); if (w > h) at.translate (w h, 0); AffineTransformOp RotR = new AffineTransformOp ( at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); imagepanel.changeimage (RotR.filter (bimg0,null null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else Se, infine, il valore di comm è B/W, si definisce l operatore grayop di classe ColorConvertOp e si effettua il filtraggio dell immagine. Il risultato del filtraggio è utilizzato nel modo consueto. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else if (comm.equals ( B/W )) { AColorConvertOp grayop = new ColorConvertOp ( ColorSpace.getInstance (ColorSpace.CD_GRAY), null); imagepanel.changeimage (grayop.filter (bimg0,null null)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null); else... L ultima opzione possibile è che si tratti di un caso di filtraggio definito per convoluzione, il quale viene eseguito invocando il metodo makeconv(). L immagine filtrata è sfruttata come descritto nelle precedenti opzioni. Metodo actionperformed() public void actionperformed (ActionEvent ev) { else { imagepanel.changeimage (makeconv (comm, bimg0)); imagecontext1.drawimage (bimg0, 0, 0, null); imagecontext0.drawimage (imagepanel.getimage(), 0, 0, null);

13 DUE APPLICAZIONI COMPLETE IN JAVA 61 Possibile uscita grafica prodotta: La successiva classe InputDlg è preposta alla gestione di una finestra secondaria dell applicazione. Tale finestra contiene nove caselle di testo in cui inserire i corrispondenti valori della matrice associata all operazione di filtraggio che si vuole definire, e un pulsante di invio che stabilisce la significatività dei dati in ingresso. Quando il pulsante è premuto, è invocato il metodo actionperformed() di un ascoltatore anonimo che legge i dati in ingresso assegnandoli all array newker della finestra principale. Successivamente la finestra viene nascosta alla vista dell utente con il metodo setvisible(). import java.awt.*; import java.awt.event.*; import javax.swing.*; public class InputDlg extends JDialog { private JTextField[] txt = new JTextField[9]; private JButton bquit; public InputDlg (Frame parent) { super (parent, true); setbounds (550, 550, 400, 200); setvisible (false false); JPanel txtpan = new JPanel(); txtpan.setlayout (new GridLayout (3, 3)); for (short j = 0; j < 9; j++) { txt[j] = new JTextField ( 0.0f ); txt[j].setbackground (Color.white); txtpan.add (txt[j]);

14 62 CAPITOLO 19 getcontentpane().add (txtpan, BorderLayout.CENTER); bquit = new JButton ( Invio ); JPanel btnpan = new JPanel(); btnpan.add (bquit); getcontentpane().add (btnpan, BorderLayout.SOUTH); bquit.addactionlistener (new ActionListener() { public void actionperformed (ActionEvent e) { FiltraggioImmagini fr = (FiltraggioImmagini) getowner(); for (short j = 0; j < 9; j++) fr.newker[j] = Float.parseFloat (txt[j].gettext()); setvisible (false false); ); Le variabili della classe InputDlg definiscono un array txt, costituito da nove caselle di testo modellate da altrettanti oggetti di classe JTextField, in cui l utente deve inserire i valori di tipo float che definiscono un filtraggio personalizzato, e un pulsante bquit di classe JButton. Dichiarazioni private JTextField[] txt = new JTextField[9]; private JButton bquit; Inizialmente il costruttore InputDlg() definisce una finestra di dialogo di pixel, dipendente dal frame principale e resa invisibile dal metodo setvisible(). Con un successivo ciclo for genera e posiziona le nove caselle di testo all interno di un pannello inserito nella regione centrale della finestra. Procede infine alla generazione e al posizionamento del pulsante bquit nella regione inferiore della stessa. Creazione del frame secondario e posizionamento dei componenti public InputDlg (Frame parent) { super (parent, true); setbounds (550, 550, 400, 200); setvisible (false false); JPanel txtpan = new JPanel(); txtpan.setlayout (new GridLayout (3, 3)); for (short j = 0; j < 9; j++) { txt[j] = new JTextField ( 0.0f ); txt[j].setbackground (Color.white); txtpan.add (txt[j]); getcontentpane().add (txtpan, BorderLayout.CENTER); bquit = new JButton ( Invio ); JPanel btnpan = new JPanel(); btnpan.add (bquit); getcontentpane().add (btnpan, BorderLayout.SOUTH);

15 DUE APPLICAZIONI COMPLETE IN JAVA 63 Un oggetto di una classe anonima funge da ascoltatore per il pulsante bquit. L unico metodo di tale classe è il metodo actionperformed() che, tramite un ciclo for, legge i valori delle nove caselle di testo e li assegna agli elementi dell array newker della finestra principale dell applicazione. La finestra è identificata dalla variabile fr tramite il metodo getowner(). Il metodo rende poi invisibile la finestra di dialogo con il metodo setvisible(). Creazione del frame secondario e definizione dell ascoltatore del pulsante public InputDlg (Frame parent) { bquit.addactionlistener (new ActionListener() { public void actionperformed (ActionEvent e) { FiltraggioImmagini fr = (FiltraggioImmagini) getowner(); for (short j = 0; j < 9; j++) fr.newker[j] = Float.parseFloat (txt[j].gettext()); setvisible (false false); ); Finestra di dialogo prodotta: Un ulteriore tipologia di finestre di dialogo, necessarie nelle operazioni di gestione delle componenti RGB delle immagini, è fornita dalla classe ColorDlg. Tale finestra contiene tre etichette e nove caselle di selezione per l impostazione delle operazioni di rimozione e inversione delle singole componenti cromatiche delle immagini, oltre ad un pulsante di invio che stabilisce la significatività dei dati in ingresso. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ColorDlg extends JDialog { private ButtonGroup[] btgroup = new ButtonGroup[3]; private JRadioButton[][] radiobt = new JRadioButton[3][3]; private JButton bquit; private String[] opr = { normale, invertito, rimosso ; public ColorDlg (Frame Parent) { super (parent, true); setbounds (550, 550, 400, 200);

16 64 CAPITOLO 19 setvisible (false false); for (short i = 0; i < 3; i++) { btgroup[i] = new ButtonGroup(); for (short j = 0; j < 3; j++) { radiobt[i][j] = new JRadioButton (opr[j], (j == 0)); btgroup[i].add (radiobt[i][j]); JPanel chkpan = new JPanel(); chkpan.setlayout (new GridLayout (3, 4)); chkpan.add (new JLabel ( ROSSO, SwingConstants.CENTER)); for (short j = 0; j < 3; j++) chkpan.add (radiobt[0][j]); chkpan.add (new JLabel ( VERDE, SwingConstants.CENTER)); for (short j = 0; j < 3; j++) chkpan.add (radiobt[1][j]); chkpan.add (new JLabel ( BLU, SwingConstants.CENTER)); for (short j = 0; j < 3; j++) chkpan.add (radiobt[2][j]); getcontentpane().add (chkpan, BorderLayout.CENTER); bquit = new JButton ( Invio ); JPanel btnpan = new JPanel(); btnpan.add (bquit); getcontentpane().add (BtnPan, BorderLayout.SOUTH); bquit.addactionlistener (new ActionListener() { public void actionperformed (ActionEvent e) { FiltraggioImmagini fr = (FiltraggioImmagini) getowner(); for (short i = 0; i < 3; i++) for (short j = 0; j < 3; j++) if (radiobt[i][j].isselected()) fr.selcolors[i] = j; setvisible (false false); ); Le variabili della classe ColorDlg definiscono un array btgroup di tre posizioni, un array radiobt di nove caselle di selezione, modellate da altrettanti oggetti di classe JRadioButton che l utente utilizza per la selezione di operazioni sui colori RGB dell immagine da filtrare, un pulsante bquit di classe JButton e un array di tre stringhe. Dichiarazioni private ButtonGroup[] btgroup = new ButtonGroup[3]; private JRadioButton[][] radiobt = new JRadioButton[3][3]; private JButton bquit; private String[] opr = { normale, invertito, rimosso ;

17 DUE APPLICAZIONI COMPLETE IN JAVA 65 Inizialmente il costruttore ColorDlg() definisce una finestra di dialogo modale di pixel, dipendente dal frame principale e resa invisibile dal metodo setvisible(). Con due cicli for crea successivamente tre gruppi di tre caselle di selezione ciascuno. L etichetta ROSSO e le caselle di selezione afferenti al primo gruppo sono quindi posizionate nella prima riga di un pannello chkpan, che è suddiviso in una griglia di tre righe e quattro colonne da un gestore GridLayout. Le rimanenti etichette VERDE e BLU e le associate caselle di selezione sono posizionate in modo analogo. Una volta completato l inserimento dei componenti nel pannello chkpan, questo è a sua volta inserito nella regione centrale della finestra di dialogo. Si procede quindi alla generazione e al posizionamento del pulsante bquit nella regione inferiore della stessa finestra. Creazione del frame secondario e posizionamento dei componenti public ColorDlg (Frame Parent) { super (parent, true); setbounds (550, 550, 400, 200); setvisible (false false); for (short i = 0; i < 3; i++) { btgroup[i] = new ButtonGroup(); for (short j = 0; j < 3; j++) { radiobt[i][j] = new JRadioButton (opr[j], (j == 0)); btgroup[i].add (radiobt[i][j]); JPanel chkpan = new JPanel(); chkpan.setlayout (new GridLayout (3, 4)); chkpan.add (new JLabel ( ROSSO, SwingConstants.CENTER)); for (short j = 0; j < 3; j++) chkpan.add (radiobt[0][j]); getcontentpane().add (chkpan, BorderLayout.CENTER); bquit = new JButton ( Invio ); JPanel btnpan = new JPanel(); btnpan.add (bquit); getcontentpane().add (BtnPan, BorderLayout.SOUTH); Un oggetto di classe anonima funge da ascoltatore per il pulsante bquit. L unico metodo di tale classe è il metodo actionperformed(). Tramite due cicli for il metodo legge i valori delle nove caselle di selezione e, per ogni riga della matrice radiobt, determina l indice di colonna della casella selezionata. Il valore è assegnato all array selcolors della finestra principale dell applicazione, che è identificata dalla variabile fr a valle dell esecuzione del metodo getowner(). Il metodo rende poi invisibile la finestra di dialogo mediante il metodo setvisible().

18 66 CAPITOLO 19 Definizione dell ascoltatore del pulsante public ColorDlg (Frame parent) { bquit.addactionlistener (new ActionListener() { public void actionperformed (ActionEvent e) { FiltraggioImmagini fr = (FiltraggioImmagini) getowner(); for (short i = 0; i < 3; i++) for (short j = 0; j < 3; j++) if (radiobt[i][j].isselected()) fr.selcolors[i] = j; setvisible (false false); ); Finestra di dialogo prodotta: Di seguito è riportato per completezza il codice della classe di utilità ImagePanel che estende la classe JPanel. Le istanze di tale classe rappresentano le superfici su cui visualizzare le immagini. La classe dispone del metodo getimage() per acquisire un immagine da visualizzare e dei metodi setimage() e changeimage() per modificarla. import java.awt.*; import java.awt.image.bufferedimage; import javax.swing.*; public class ImagePanel extends JPanel { private BufferedImage image; public ImagePanel (int hsize, int vsize) { super(); setsize (hsize, vsize); this.image = new BufferedImage (hsize, vsize, BufferedImage.TYPE_INT_RGB); protected void paintcomponent (Graphics g) { super.paintcomponent (g); g.drawimage (image, 0, 0,null null);

19 DUE APPLICAZIONI COMPLETE IN JAVA 67 public BufferedImage getimage() { return image; public void setimage (BufferedImage newimagex) { image = newimagex; public void changeimage (BufferedImage newimage) { setimage (newimage); repaint(); 19.2 Un applicazione per il disegno Il problema seguente, pur ignorando volutamente le problematiche di modellazione coinvolte dal software grafico, che esulano dagli scopi del testo, affronta due aspetti chiave legati alla generazione e alla manutenzione di disegni tecnici: il primo aspetto riguarda la costruzione dell interfaccia vera e propria e il trattamento delle forme geometriche ivi tracciabili, mentre il secondo aspetto è inerente alle operazioni di gestione di file contenenti disegni che possono essere generati o richiamati dalla sottostante applicazione Definizione del problema Il problema affrontato riguarda la creazione e la manutenzione di archivi di disegni tecnici. Problema Costruire un applicazione che permetta di gestire archivi di disegni, ciascuno dei quali costituito da forme geometriche chiuse specificate nei propri parametri dimensionali, di colorazione e campitura. Le operazioni di archiviazione devono essere gestite tramite menu di comandi, mentre le specifiche di tracciatura vanno acquisite per mezzo di menu di opzioni. La natura del problema richiede la progettazione di una GUI attraverso la quale operare la visualizzazione dei disegni durante le fasi di creazione oppure di modifica. Richiede altresì l utilizzo di un menu di comandi per l attivazione delle operazioni di manipolazione dei file in cui sono registrati i disegni dell archivio. La Figura 19.2 riporta una possibile configurazione dell interfaccia grafica durante la generazione di un nuovo disegno. Nella fase indicata, un ellisse è aggiunta ad una precedente forma poligonale. L ellisse è definita nei parametri cromatici e posizionali. Si osservi che il comando specificato dal menu Archivio è quello di Nuovo Disegno.

20 68 CAPITOLO 19 Figura 19.2 Possibile configurazione di finestra Costruzione dell interfaccia La progettazione dell interfaccia richiede che vengano considerati tre aspetti diversi. Il primo aspetto riguarda la costruzione delle forme geometriche che si intendono usare e la loro caratterizzazione grafica. A tal fine è necessario: modellare le forme geometriche trattate, facendole derivare da una comune classe Geometria in cui inserire i parametri caratterizzanti con esclusione di quelli dimensionali; impiegare un supporto di classe Vector al fine di contenere e manipolare efficacemente le forme generate. Il secondo aspetto è inerente alle modalità di acquisizione dei parametri geometrici, per i quali si possono utilizzare opportune sottofinestre di interazione. Tipicamente: una finestra di tipo JDialog per l acquisizione dei parametri che sono propri di ciascuna figura. Il terzo aspetto concerne i controlli da utilizzare per la gestione dell interfaccia e per la selezione delle forme, dei colori, degli spessori e delle campiture che si intendono di volta in volta usare. Complessivamente sono richiesti: un controllo di tipo Mouse per il puntamento del cursore; un controllo di tipo JComboBox per ciascuna delle possibili selezioni effettuabili al fine di caratterizzare la rappresentazione grafica delle forme geometriche. In Figura 19.3 sono riportate le classi usate dall applicazione, denominata Geometrie.

21 DUE APPLICAZIONI COMPLETE IN JAVA 69 Figura 19.3 Classi dell applicazione Geometrie Realizzazione delle forme geometriche La modellazione delle forme geometriche di interesse del programma è realizzata da altrettante classi, ognuna dei quali è competente per una specifica geometria. Tale soluzione permette di incapsulare in classi separate le proprietà geometriche e i metodi propri di ciascuna forma, assicurando nel contempo una facile estensione dell architettura complessiva dell interfaccia. In questo contesto, peraltro, tutte le classi sono considerati estensioni della comune classe astratta Geometria, la quale assicura l ereditarietà dei parametri di visualizzazione colorebordo, coloreinterno, spessore, campitura, e forza in ciascuna classe derivata la personalizzazione del metodo di tracciatura draw() e del metodo creapickobj(). import java.awt.*; import java.io.*; abstract class Geometria implements Serializable { protected String figura; protected Color colorebordo, coloreinterno; protected int spessore; protected String campitura; public Geometria (String fig, Color cobrd, Color coint, int spe, String cam) { figura = fig; colorebordo = cobrd; coloreinterno = coint; spessore = spe; campitura = cam;

22 70 CAPITOLO 19 abstract void draw (Graphics g); abstract Shape creapickobj(); A titolo esemplificativo è riportata la classe Ellisse. La classe contiene l omonimo costruttore Ellisse() e le variabili protette infsx e supdx. Queste rappresentano i punti diametralmente opposti del rettangolo di contenimento dell ellisse. La classe eredita dalla classe astratta Geometria, riscrivendoli in forma specializzata, i metodi draw() e creapickobj(). Il metodo draw() è necessario per la tracciatura delle ellissi, di cui acquisisce la regione di delimitazione: ne colora la superficie interna con il colore coloreinterno invocando il metodo fill(), qualora sia prevista la campitura Piena, e ne traccia il profilo esterno mediante il comando draw() nel colore colorebordo. Il metodo creapickobj() ha invece la funzione di esportare l ellisse nella forma di oggetto di tipo Shape, così da permetterne la selezione tramite mouse nel caso in cui debba per qualche motivo essere rimossa dal disegno corrente. import java.awt.*; import java.awt.geom.*; import java.io.*; public class Ellisse extends Geometria implements Serializable { protected Punto infsx, supdx; public Ellisse (String fig, Color cobrd, Color coint, int spe, String cam, int x1, int y1, int x2, int y2) { super (fig, cobrd, coint, spe, cam); infsx = new Punto (x1, y1); supdx = new Punto (x2, y2); public void draw (Graphics g) { int x1 = infsx.x; int y1 = infsx.y; int x2 = supdx.x; int y2 = supdx.y; Graphics2D g2 = (Graphics2D) g; if (campitura.equals ( Piena )) { g2.setcolor (coloreinterno); g2.fill (new Ellipse2D.Double (x1, y1, x2 x1, y2 y1)); g2.setcolor (colorebordo); g2.setstroke (new BasicStroke (spessore)); g2.draw (new Ellipse2D.Double (x1, y1, x2 x1, y2 y1)); public Shape creapickobj() { int x1 = infsx.x; int y1 = infsx.y; int x2 = supdx.x; int y2 = supdx.y; return (new Ellipse2D.Double (x1, y1, x2 x1, y2 y1));

23 DUE APPLICAZIONI COMPLETE IN JAVA 71 Tutte le forme geometriche in tal modo costruite sono allocate, per semplicità di gestione, in un istanza della classe Vector denominata formegeom. Ciò permetterà di trattarle alla stregua di un array di oggetti di tipo Geometria, ad estensione modificabile a tempo di esecuzione, e di enumerarli mediante i metodi dell interfaccia Enumeration Realizzazione delle finestre di dialogo L acquisizione dei parametri delle forme geometriche, necessari per il dimensionamento e per la loro localizzazione sulla regione di tracciatura del frame, è effettuata tramite opportune finestre di dialogo. Più in particolare, ciascuna geometria è associata ad una classe denominata Dlg_GetGeometria. Data la similarità strutturale delle classi, nel seguito è esemplificata la sola classe Dlg_GetEllisse. La classe Dlg_GetEllisse è responsabile della generazione della finestra di dialogo per il cui tramite acquisire i parametri di tracciatura delle entità derivabili dalla classe Ellisse. La forma grafica di tale finestra è riportata in Figura In essa si osservano: quattro campi editabili di classe JTextField, inizializzati al valore zero e destinati all acquisizione delle coordinate dei punti caratteristici del rettangolo di contenimento dell ellisse, ciascuno con associato un campo di classe JLabel in cui è riportata la specifica del valore da introdurre; un oggetto della classe JButton con la stringa OK, destinato alla chiusura della finestra di dialogo; un ulteriore campo di classe JTextField, con associata l etichetta Stato:, impiegato per segnalare eventuali errori compiuti dall utente nell introduzione dei parametri di lavoro. Figura 19.4 Finestra di dialogo per la classe Ellisse. Il costruttore Dlg_GetEllisse() della classe assolve alla costruzione della finestra di dialogo. Come si evince dal codice, si tratta di una finestra di tipo modale intitolata con il nome Ellisse della associata classe di modellazione. I campi testuali e le relative etichette esplicative sono costituiti dagli array txt[] e lb[], mentre le due etichette InfSX: e SupDX:, non associate a campi di tipo JTextField, sono realizzate dalle variabili lb00 e lb01. L insieme delle stringhe con cui sono costruite le etichette è fornito dall array lbstr[]. Gli ulteriori array lbpos[][] e txtpos[][] contengono i valori di localizzazione delle etichette e dei campi testuali all interno della finestra di dialogo. import java.awt.*; import java.awt.event.*; import javax.swing.*;

24 72 CAPITOLO 19 public class Dlg_GetEllisse extends JDialog { private JButton bquit; private JLabel lb00, lb01; private JLabel[] lb = new JLabel[5]; private JTextField[] txt = new JTextField[5]; private String[] lbstr = { Stato:, x, y, x, y, InfSX:, SupDX: ; private int[][] lbpos = { {10, 125, 40, 22, {10, 60, 20, 22, {10, 90, 20, 22, {150, 60, 20, 22, {150, 90, 20, 22, {10, 30, 60, 22, {150, 30, 60, 22 ; private int[][] txtpos = { {60, 125, 150, 22, {30, 60, 110, 22, {30, 90, 110, 22, {170, 60, 110, 22, {170, 90, 110, 22 ; public Dlg_GetEllisse (Frame parent) { super (parent, Ellisse, true); setbounds (100, 100, 300, 200); Container cnt = getcontentpane(); cnt.setlayout (null null); for (int k = 0; k < lb.length; k++) { lb[k] = new JLabel (lbstr[k]); lb[k].setbounds (lbpos[k][0], lbpos[k][1], lbpos[k][2], lbpos[k][3]); cnt.add (lb[k]); txt[k] = new JTextField(); txt[k].setbounds (txtpos[k][0], txtpos[k][1], txtpos[k][2], txtpos[k][3]); cnt.add (txt[k]); lb00 = new JLabel (lbstr[lb.length]); lb00.setbounds (lbpos[lb.length][0], lbpos[lb.length][1], lbpos[lb.length][2], lbpos[lb.length][3]); cnt.add (lb00); lb01 = new JLabel (lbstr[lb.length+1]); lb01.setbounds (lbpos[lb.length+1][0], lbpos[lb.length+1][1], lbpos[lb.length+1][2], lbpos[lb.length+1][3]); cnt.add (lb01); bquit = new JButton ( OK ); bquit.setbounds (220, 125, 60, 22); cnt.add (bquit); bquit.addactionlistener (new ActionListener() { public void actionperformed (ActionEvent ev) { hide(); ); Per l acquisizione dei parametri e la successiva esportazione dal dialogo alla classe che li utilizzerà, Dlg_GetEllisse implementa i metodi getparm(), getparmint() e fromstringtoint(). Il metodo getparm() fornisce la procedura di basso livello destinata ad accedere ai campi

25 DUE APPLICAZIONI COMPLETE IN JAVA 73 editabili del dialogo, al fine di acquisirne le stringhe rappresentative dei valori numerici in essi contenute. Su tali stringhe il metodo fromstringtoint() espleta i controlli di corretta estensione e di assenza di caratteri sintatticamente illeciti. Infine il metodo getparmint() utilizza i due metodi precedenti per ottenere i valori da esportare dalla finestra di dialogo. Tutti e tre i metodi indicati sono già stati ampiamente analizzati nella Scheda 12.6a relativa alla classe DLG_GetRettangolo, alla quale si rimanda per i necessari dettagli implementativi. private String[] getparm (String errstr) { public int[] getparmint() { private static int fromstringtoint (String str, int[] errcode) { Supporto di tracciatura e pannello di controllo La configurazione complessiva del frame di interfacciamento dell applicazione è competenza della classe Geometrie. Questa è responsabile della creazione del pannello dei controlli, del supporto di tracciatura, della allocazione delle finestre di dialogo per l interazione con l utente e della creazione e gestione del menu dei comandi. Strutturalmente la classe si articola nel costruttore Geometrie(), nella classe interna PanDisegno e nella classe interna AscMenu che fornisce l ascoltatore per il menu dei comandi. Tutti i metodi fanno capo ad uno dei tre componenti sovra citati e accedono alle variabili globali della classe. Trascurando le variabili di pertinenza del menu comandi, che verranno trattate nel paragrafo seguente, esse comprendono: il menu di opzione cmbforme, per la selezione della forma geometrica da generare, i menu cmbcobordo e cmbcointerno, per la definizione dei colori del profilo esterno e della loro regione interna, i menu cmbspessore e cmbcampitura, per la definizione dello spessore delle linee perimetrali e del tipo di campitura, oltre alle finestre di dialogo dlggetellisse, dlggetrettangolo e dlggetpoligono per l acquisizione dei parametri di localizzazione delle forme create. Ad esse si aggiungono la regione di tracciatura disegno, istanza della classe PanDisegno, e il vettore formegeom delle forme geometriche generate dall applicazione. Le voci costituenti il menu comandi e i menu di opzione sono specificate dagli array di stringhe strmenu, strforme, strspessore, strcampitura e strcolore. import java.util.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.io.*; import javax.swing.*; import javax.swing.border.*;

26 74 CAPITOLO 19 public class Geometrie extends JFrame { private JComboBox cmbforme, cmbcobordo, cmbcointerno, cmbspessore, cmbcampitura; private static Dlg_GetEllisse dlggetellisse; private static Dlg_GetRettangolo dlggetrettangolo; private static Dlg_GetPoligono dlggetpoligono; private PanDisegno disegno; private Vector formegeom = new Vector(); private String[] strmenu = { Nuovo Disegno, Importa Disegno, Esporta Disegno, Elimina Forma, Esci ; private String[] strforme = { Rettangolo, Ellisse, Poligono ; private String[] strspessore = { 1, 2, 4, 8 ; private String[] strcampitura = { Piena, Vuota ; private String[] strcolore = { Bianco, Grigio, Grigio chiaro, Grigio scuro, Nero, Rosso, Rosa, Arancio, Giallo, Verde, Magenta, Ciano, Blu ; private static final int DEFAULT_TYPE = 0; private static final int ELIMINA_FORMA = 1; private int menuoptype = DEFAULT_TYPE; Il primo componente di rilievo della classe è costituito dal costruttore Geometrie(). Inizialmente il costruttore procede alla creazione del frame assumendo lo schema BorderLayout per la distribuzione dei componenti. Successivamente alloca le finestre di dialogo dlggetellisse, dlggetrettangolo e dlggetpoligono, mantenendole nello stato di non visibilità. Alloca quindi la regione di tracciatura disegno, istanza di PanDisegno, nella parte centrale del frame. public Geometrie (int winx, int winy, int hsize, int vsize) { setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); settitle (getclass().getname()); setbounds (winx, winy, hsize, vsize); Container cnt = getcontentpane(); cnt.setlayout (new BorderLayout()); dlggetellisse = new Dlg_GetEllisse (this this); dlggetrettangolo = new Dlg_GetRettangolo (this this); dlggetpoligono = new Dlg_GetPoligono (this this); disegno = new PanDisegno(); cnt.add (disegno, Center ); La successiva operazione consiste nella creazione del pannello dei controlli. Quest ultimo include i diversi menu di opzione, ciascuno con associato il corrispondente titolo, distribuiti anch essi secondo lo schema GridLayout. Ogni coppia titolo, menu costituisce un ulteriore

27 DUE APPLICAZIONI COMPLETE IN JAVA 75 sottopannello, con layout articolato su due righe e singola colonna, che è generato da un metodo di servizio denominato creapannello(). Una volta completato, il pannello è inserito nella regione North del frame complessivo. public Geometrie (int winx, int winy, int hsize, int vsize) { Panel pannello = new JPanel(); pannello.setbackground (Color.lightGray); pannello.setlayout (new GridLayout (1, 5, 4, 4)); cmbforme = new JComboBox(); JPanel panforme = creapannello (cmbforme, Forme, strforme); pannello.add (panforme); cmbcobordo = new JComboBox(); JPanel pancobordo = creapannello (cmbcobordo, Colore bordo, strcolore); pannello.add (pancobordo); cmbcointerno = new JComboBox(); JPanel pancointerno = creapannello (cmbcointerno, Colore interno, strcolore); pannello.add (pancointerno); cmbspessore = new JComboBox(); JPanel panspessore = creapannello (cmbspessore, Spessore, strspessore); pannello.add (panspessore); cmbcampitura = new JComboBox(); JPanel pancampitura = creapannello (cmbcampitura, Campitura, strcampitura); pannello.add (pancampitura); add (pannello, North ); setvisible (true true); Quello che segue è il metodo di realizzazione dei sottopannelli contenenti i menu di opzione cmbforme, cmbcobordo o cmbcointerno, cmbspessore e cmbcampitura previsti dal frame. private JPanel creapannello (JComboBox combobox, String titolo, String[] stritem) { JPanel pancombo = new JPanel(); pancombo.setborder (new LineBorder (Color.red, 1)); pancombo.setlayout (new GridLayout (2, 1)); pancombo.setbackground (Color.yellow); JLabel lbpan = new JLabel (titolo, JLabel.CENTER); lbpan.setforeground (Color.blue); lbpan.setfont (new Font ( Arial, Font.BOLD, 14)); pancombo.add (lbpan); for (int k = 0; k < stritem.length; k++) combobox.additem (stritem[k]); pancombo.add (combobox); return pancombo;

28 76 CAPITOLO 19 Il secondo componente chiave della classe Geometrie è la classe interna PanDisegno. Questa è preposta alla cattura degli eventi sollevati dal mouse all interno della regione di tracciatura e alla conseguente visualizzazione o rimozione delle forme geometriche selezionate. Al tale fine la classe sfrutta la variabile globale formegeom, istanziata dalla classe Vector, con il compito di mantenere traccia di tutte le geometrie generate e correntemente presenti nell applicazione. I componenti del vettore vengono da esso estratti e utilizzati dal metodo paintcomponent() ogniqualvolta è richiesta la rigenerazione del contenuto della finestra del frame. class PanDisegno extends JPanel { private int[] parm = new int[50]; public PanDisegno() { AscMsClick ascclick = new AscMsClick(); addmouselistener (ascclick); setbackground (Color.white); public void paintcomponent (Graphics g) { super.paintcomponent (g); Geometria forma; int nrforme = formegeom.size(); for (int k = 0; k < nrforme; k++) { forma = (Geometria) formegeom.elementat(k); forma.draw (g); La configurazione di formegeom è determinata dalle forme geometriche che sono generate o rimosse dall applicazione mediante operazioni controllate dal mouse. Per discriminare le due tipologie di operazioni l ascoltatore fa uso della variabile globale menuoptype, la quale può assumere i valori DEFAULT_TYPE e ELIMINA_FORMA. Il primo valore è di default e stabilisce il contesto nel quale un click sul mouse causa la selezione di una nuova forma da inserire nel disegno, mentre il secondo è definito selezionando nel menu dei comandi l operazione di rimozione di una figura tra quelle già disponibili. In corrispondenza di ogni click operato sul mouse nel contesto DEFAULT_TYPE, quindi, l adattatore ascclick seleziona dai rispettivi menu di opzione, con il metodo getselecteditem(), la forma geometrica strforma, il colore del profilo esterno strcobordo e della regione interna strcointerno, lo spessore strspessore e la campitura strcampitura correntemente attivi. I valori acquisiti sono utilizzati per generare mediante i metodi ausiliari defopzione() una nuova forma geometrica, istanza di sottoclassi di Geometria, da inserire nel vettore formegeom e da visualizzare in disegno a seguito del comando repaint(). class AscMsClick extends MouseAdapter { public void mouseclicked (MouseEvent e) { if (menuoptype == DEFAULT_TYPE) { Geometria forma = null; String strforma = (String) cmbforme.getselecteditem(); String strcobordo = (String) cmbcobordo.getselecteditem();

COGNOME.NOME. Matricola

COGNOME.NOME. Matricola Esame di PROGRAMMAZIONE ORIENTATA AGLI OGGETTI Appello del 4.9.2013 COGNOME.NOME. Matricola Tre classi, denominate Anemone, Fiordaliso e Viola devono assicurare la visualizzazione di un fiore stilizzato

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

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

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile 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.

Dettagli

Grafico della parabola

Grafico della parabola Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un

Dettagli

EasyPrint v4.15. Gadget e calendari. Manuale Utente

EasyPrint v4.15. Gadget e calendari. Manuale Utente EasyPrint v4.15 Gadget e calendari Manuale Utente Lo strumento di impaginazione gadget e calendari consiste in una nuova funzione del software da banco EasyPrint 4 che permette di ordinare in maniera semplice

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Il menu File contiene tutti i comandi relativi alle seguenti operazioni:

Il menu File contiene tutti i comandi relativi alle seguenti operazioni: 1 - FILE FIGURA 1.1 Il menu File contiene tutti i comandi relativi alle seguenti operazioni: - apertura e salvataggio di disegni nuovi ed esistenti; - spedizione di disegni tramite email; - collegamento

Dettagli

SUITE BY10850 Editor Parametri e Configurazione

SUITE BY10850 Editor Parametri e Configurazione Pagina 1 di 15 SUITE BY10850 Editor Parametri e Configurazione Per usare l Editor non occorre l apparecchiatura. Funziona autonomamente offline. Serve per preparare files di configurazioni personalizzate

Dettagli

L interfaccia grafica con Java

L interfaccia grafica con Java L interfaccia grafica con Java 1/24 L interfaccia utente serve per la comunicazione tra utente e programma Distinguiamo le interfacce tra quelle a caratteri e quelle grafiche Le GUI (Graphical user interface)

Dettagli

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database Microsoft Access Introduzione alle basi di dati Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale limitato Meccanismi di sicurezza, protezione di dati e gestione

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO) Codice documento 10091501 Data creazione 15/09/2010 Ultima revisione Software DOCUMATIC Versione 7 UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO) Convenzioni Software gestionale

Dettagli

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

Database Manager Guida utente DMAN-IT-01/09/10 Database Manager Guida utente DMAN-IT-01/09/10 Le informazioni contenute in questo manuale di documentazione non sono contrattuali e possono essere modificate senza preavviso. La fornitura del software

Dettagli

L interfaccia grafica in Java

L interfaccia grafica in Java L interfaccia grafica in Java Java possiede due package per la creazione di interfacce grafiche java.awt javax.swing AWT (Abstract Widget Toolkit) presente già in Java 1.0, migliorato in Java 1.1. Invariato

Dettagli

MANUALE UTENTE Fiscali Free

MANUALE UTENTE Fiscali Free MANUALE UTENTE Fiscali Free Le informazioni contenute in questa pubblicazione sono soggette a modifiche da parte della ComputerNetRimini. Il software descritto in questa pubblicazione viene rilasciato

Dettagli

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

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

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

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Le basi della grafica in Java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Elaborazione classica o imperativa L elaborazione è concentrata nel momento centrale, durante

Dettagli

E-mail: infobusiness@zucchetti.it. Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

E-mail: infobusiness@zucchetti.it. Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11 Gestione Filtri InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11 INDICE Indice...2 1. GESTIONE DEI FILTRI...3 1.1. Filtri fissi...3 1.2. Filtro parametrico...5 1.3. Funzione di ricerca...6 2. CONTESTI IN CUI

Dettagli

DENUNCE EDILCONNECT GUIDA COMPILAZIONE

DENUNCE EDILCONNECT GUIDA COMPILAZIONE Cassa Edile Como e Lecco DENUNCE EDILCONNECT GUIDA COMPILAZIONE COMPILAZIONE DA FILE PAGHE Guida per i consulenti e le imprese che compilano la denuncia utilizzando il file di esportazione dei software

Dettagli

Il controllo della visualizzazione

Il controllo della visualizzazione Capitolo 3 Il controllo della visualizzazione Per disegnare in modo preciso è necessario regolare continuamente l inquadratura in modo da vedere la parte di disegno che interessa. Saper utilizzare gli

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Nuova procedura di Cassa Contanti Wingesfar: istruzioni per le farmacie Novembre 2009

Nuova procedura di Cassa Contanti Wingesfar: istruzioni per le farmacie Novembre 2009 Nuova procedura di Cassa Contanti Wingesfar: istruzioni per le farmacie Novembre 2009 Documenti Tecnici Informatica e Farmacia Vega S.p.A. Premessa La procedura di Cassa Contanti rileva i movimenti giornalieri

Dettagli

7.4 Estrazione di materiale dal web

7.4 Estrazione di materiale dal web 7.4 Estrazione di materiale dal web Salvataggio di file Salvataggio della pagina Una pagina web può essere salvata in locale per poterla consultare anche senza essere collegati alla Rete. Si può scegliere

Dettagli

Gestione Rapporti (Calcolo Aree)

Gestione Rapporti (Calcolo Aree) Gestione Rapporti (Calcolo Aree) L interfaccia dello strumento generale «Gestione Rapporti»...3 Accedere all interfaccia (toolbar)...3 Comandi associati alle icone della toolbar...4 La finestra di dialogo

Dettagli

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

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari RIFERIMENTI Università di L Aquila Facoltà di Biotecnologie Agro-alimentari Esame di Laboratorio di informatica e statistica Parte 3 (versione 1.0) Il riferimento permette di identificare univocamente

Dettagli

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it

FIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it FIRESHOP.NET Gestione del taglia e colore www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione iniziale... 5 Gestione delle varianti... 6 Raggruppamento delle varianti... 8 Gestire le varianti

Dettagli

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. E stato previsto l utilizzo di uno specifico prodotto informatico (denominato

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

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

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

5.2 UTILIZZO DELL APPLICAZIONE

5.2 UTILIZZO DELL APPLICAZIONE 5.2 UTILIZZO DELL APPLICAZIONE Base offre la possibilità di creare database strutturati in termini di oggetti, quali tabelle, formulari, ricerche e rapporti, di visualizzarli e utilizzarli in diverse modalità.

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

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

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0 PAG. 2 DI 38 INDICE 1. PREMESSA 3 2. SCARICO DEL SOFTWARE 4 2.1 AMBIENTE WINDOWS 5 2.2 AMBIENTE MACINTOSH 6 2.3 AMBIENTE

Dettagli

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

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

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

Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Realizzato e distribuito da LeggeraSoft Sommario Premessa... 2 Fase di Login... 2 Menù principale... 2 Anagrafica clienti...

Dettagli

Sistema Informativo di Teleraccolta EMITTENTI

Sistema Informativo di Teleraccolta EMITTENTI Sistema Informativo di EMITTENTI aventi l Italia come Stato membro di origine i cui valori mobiliari sono ammessi alla negoziazione in un altro Stato membro dell Unione Europea Art. 116 bis, comma 1, del

Dettagli

FIRESHOP.NET. Gestione completa degli ordini e degli impegni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione completa degli ordini e degli impegni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione completa degli ordini e degli impegni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 3 Gli ordini a fornitore... 5 Gli impegni dei clienti... 7 Evadere gli ordini

Dettagli

Progetto INCOME. Manuale Utente Operatore Installazione

Progetto INCOME. Manuale Utente Operatore Installazione VERSIONI Manuale Utente Operatore Installazione Tosca-Mobile VERS. Motivo Modifiche Data Approvazione Approvatore 1.0 Prima emissione 02/12/11 1/21 Sommario SOMMARIO... 2 INTRODUZIONE... 3 1.1. CONTENUTI

Dettagli

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. Release 5.20 Manuale Operativo ORDINI PLUS Gestione delle richieste di acquisto In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. La gestione

Dettagli

MANUALE SOFTWARE F24 ISTRUZIONI PER L UTENTE

MANUALE SOFTWARE F24 ISTRUZIONI PER L UTENTE MANUALE SOFTWARE F24 ISTRUZIONI PER L UTENTE PAGINA 2 MODELLO F24 Indice Capitolo 1: Come muoversi all interno del programma 3 1.1 Importazione dati da anno precedente 3 1.2 Inserimento di una nuova anagrafica

Dettagli

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

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

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

Eventi di azione. // con interfaccia per eventi di azione Eventi di azione (Interfaces ActionListener, Classes ActionEvent) Sono generati quando si premono bottoni, si selezionano voci di menù, si preme invio mentre si scrive in un campo di testo. In awt sono

Dettagli

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

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Modulo 3 - Elaborazione Testi 3.5 Stampa unione Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.5 Stampa unione Maria Maddalena Fornari Stampa Unione Processo che permette di unire dati provenienti da tipi

Dettagli

MANUALE PORTALE UTENTE IMPRENDITORE

MANUALE PORTALE UTENTE IMPRENDITORE MANUALE PORTALE UTENTE IMPRENDITORE Indice 1. REQUISITI MINIMI DI SISTEMA E CONTATTI PROGETTO RIGENER@... 3 2. IL PORTALE RIGENER@... 4 2.1 ACCESSO ALLE AREE PRIVATE... 7 2.1.1 Accesso al sito con Windows

Dettagli

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

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

WWW.ICTIME.ORG. NVU Manuale d uso. Cimini Simonelli Testa

WWW.ICTIME.ORG. NVU Manuale d uso. Cimini Simonelli Testa WWW.ICTIME.ORG NVU Manuale d uso Cimini Simonelli Testa Cecilia Cimini Angelo Simonelli Francesco Testa NVU Manuale d uso EDIZIONE Gennaio 2008 Questo manuale utilizza la Creative Commons License www.ictime.org

Dettagli

Monitor Orientamento. Manuale Utente

Monitor Orientamento. Manuale Utente Monitor Orientamento Manuale Utente 1 Indice 1 Accesso al portale... 3 2 Trattamento dei dati personali... 4 3 Home Page... 5 4 Monitor... 5 4.1 Raggruppamento e ordinamento dati... 6 4.2 Esportazione...

Dettagli

Tabelle Pivot - DISPENSE

Tabelle Pivot - DISPENSE Tabelle Pivot - DISPENSE Definizione Pivot Table: strumento che permette di riepilogare ed analizzare i dati di una tabella dinamicamente. Sono utilità che consentono di aggregare i dati secondo i criteri

Dettagli

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1 2 - Modifica FIGURA 2.1 Il menu a tendina Modifica contiene il gruppo di comandi relativi alla selezione delle entità del disegno, alla gestione dei layer, alla gestione delle proprietà delle varie entità

Dettagli

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE Il software ideale per la gestione delle prenotazioni GUIDA UTENTE Presentazione... 2 Installazione... 3 Prima esecuzione... 6 Registrazione del programma... 8 Inserimento Immobile... 9 Inserimento proprietario...

Dettagli

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella

Dettagli

SOMMARIO... 3 INTRODUZIONE...

SOMMARIO... 3 INTRODUZIONE... Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...

Dettagli

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

NAVIGAORA HOTSPOT. Manuale utente per la configurazione NAVIGAORA HOTSPOT Manuale utente per la configurazione NAVIGAORA Hotspot è l innovativo servizio che offre ai suoi clienti accesso ad Internet gratuito, in modo semplice e veloce, grazie al collegamento

Dettagli

Pagina 1 di 16. Manuale d uso 626 VISITE MEDICHE

Pagina 1 di 16. Manuale d uso 626 VISITE MEDICHE Pagina 1 di 16 Manuale d uso MANUALE D USO 626 Visite Mediche Copyright GRUPPO INFOTEL s.r.l.- Via Strauss 45 PBX 0828.302200 Battipaglia (SA) Windows e Ms-Word sono marchi registrati dalla Microsoft Corporation

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

Capitolo 3 Guida operativa del programma TQ Sistema

Capitolo 3 Guida operativa del programma TQ Sistema Capitolo 3 Guida operativa del programma TQ Sistema Panoramica delle funzionalità Questa guida contiene le informazioni necessarie per utilizzare il pacchetto TQ Sistema in modo veloce ed efficiente, mediante

Dettagli

PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152)

PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152) Commissario Delegato per l Emergenza Bonifiche e la Tutela delle Acque in Sicilia PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152) Sistema WEB-GIS

Dettagli

1. Le macro in Access 2000/2003

1. Le macro in Access 2000/2003 LIBRERIA WEB 1. Le macro in Access 2000/2003 Per creare una macro, si deve aprire l elenco delle macro dalla finestra principale del database: facendo clic su Nuovo, si presenta la griglia che permette

Dettagli

FrerEnergy: PROGRAMMA PER LA SUPERVISIONE DEI CONSUMI DI ENERGIA ELETTRICA

FrerEnergy: PROGRAMMA PER LA SUPERVISIONE DEI CONSUMI DI ENERGIA ELETTRICA FrerEnergy: PROGRAMMA PER LA SUPERVISIONE DEI CONSUMI DI ENERGIA ELETTRICA Descrizione Generale E un programma di supervisione in grado di comunicare, visualizzare, memorizzare e stampare i consumi dell

Dettagli

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 1 di 38 Portale tirocini Manuale utente Per la gestione del Progetto Formativo GESTIONE PROGETTO FORMATIVO Pag. 2 di 38 INDICE 1. INTRODUZIONE... 3 2. ACCESSO AL SISTEMA...

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

ACCESSO AL SISTEMA HELIOS...

ACCESSO AL SISTEMA HELIOS... Manuale Utente (Gestione Formazione) Versione 2.0.2 SOMMARIO 1. PREMESSA... 3 2. ACCESSO AL SISTEMA HELIOS... 4 2.1. Pagina Iniziale... 6 3. CARICAMENTO ORE FORMAZIONE GENERALE... 9 3.1. RECUPERO MODELLO

Dettagli

Gestire immagini e grafica con Word 2010

Gestire immagini e grafica con Word 2010 Gestire immagini e grafica con Word 2010 Con Word 2010 è possibile impaginare documenti in modo semi-professionale ottenendo risultati graficamente gradevoli. Inserire un immagine e gestire il testo Prima

Dettagli

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

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

. 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

. 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 Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

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

Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e Word è un elaboratore di testi in grado di combinare il testo con immagini, fogli di lavoro e grafici, tutto nello stesso file di documento. Durante il lavoro testo e illustrazioni appaiono sullo schermo

Dettagli

Procedura SMS. Manuale Utente

Procedura SMS. Manuale Utente Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Software standard Alpi Label Ver. 2.2.0.0

Software standard Alpi Label Ver. 2.2.0.0 Pag. 1 di 16 Manuale utente Software standard Alpi Label Ver. 2.2.0.0 Pag. 2 di 16 1 SOMMARIO Sommario 1 Sommario... 2 2 Specifiche Tecniche... 3 3 Maschera Principale... 4 4 Funzioni menù... 7 Pag. 3

Dettagli

CONTENT MANAGEMENT SY STEM

CONTENT MANAGEMENT SY STEM CONTENT MANAGEMENT SY STEM I NDI CE I NTRODUZI ONE Accesso al CMS 1) CONTENUTI 1.1 I nserimento, modifica e cancellazione dei contenuti 1.2 Sezioni, categorie e sottocategorie 2) UTENTI 3) UP LOAD FILES

Dettagli

PIATTAFORMA DOCUMENTALE CRG

PIATTAFORMA DOCUMENTALE CRG SISTEMA DI GESTIONE DOCUMENTALE DMS24 PIATTAFORMA DOCUMENTALE CRG APPLICAZIONE PER LE PROCEDURE DI GARE D AMBITO 1 AGENDA 1. Introduzione 2. I Livelli di accesso 3. Architettura di configurazione 4. Accesso

Dettagli

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

Dettagli

4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione)

4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione) - 36 - Manuale di Aggiornamento 4 MODULI AGGIUNTIVI 4.1 FAX EMAIL: Sollecito consegne via email (Nuova funzione) È stata realizzata una nuova funzione che permette di inviare un sollecito ai fornitori,

Dettagli

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Esercitazione. Creazione di Diagrammi di Gantt con Win Project

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Esercitazione. Creazione di Diagrammi di Gantt con Win Project ESERCITAZIONE Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto Esercitazione Creazione di Diagrammi di Gantt con Win Project ORGANISMO BILATERALE PER LA FORMAZIONE IN CAMPANIA CREAZIONE

Dettagli

Il foglio elettronico. Excel 2013 3 PARTE

Il foglio elettronico. Excel 2013 3 PARTE Il foglio elettronico Excel 2013 3 PARTE Versione 15/10/2013 Le tabelle PIVOT Tabelle PIVOT Le tabelle pivot sono tabelle interattive che consentono all'utente di raggruppare e riassumere grandi quantità

Dettagli

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it

FIRESHOP.NET. Gestione Lotti & Matricole. www.firesoft.it FIRESHOP.NET Gestione Lotti & Matricole www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione... 6 Personalizzare le etichette del modulo lotti... 6 Personalizzare i campi che identificano

Dettagli

LA FINESTRA DI GOAL (SCHERMATA PRINCIPALE E PANNELLO DEI COMANDI)

LA FINESTRA DI GOAL (SCHERMATA PRINCIPALE E PANNELLO DEI COMANDI) FUNZIONI DEL PROGRAMMA GOAL Il programma GOAL consente all utilizzatore di creare animazioni grafiche rappresentanti schemi, esercitazioni e contrapposizioni tattiche. Le animazioni create possono essere

Dettagli

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti MS Word per la TESI Barra degli strumenti Cos è? Barra degli strumenti Formattazione di un paragrafo Formattazione dei caratteri Gli stili Tabelle, figure, formule Intestazione e piè di pagina Indice e

Dettagli

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo Prerequisiti Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo L opzione Conto lavoro è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione L opzione Conto lavoro permette

Dettagli

WEBGIS 1.0. Guida per l utente

WEBGIS 1.0. Guida per l utente WEBGIS 1.0 Guida per l utente SOMMARIO 1 INTRODUZIONE...3 2 FUNZIONALITA...4 2.1 Strumenti WebGIS... 4 2.1.1 Mappa... 5 2.1.2 Inquadramento mappa... 6 2.1.3 Toolbar... 7 2.1.4 Scala... 9 2.1.5 Legenda...

Dettagli

Comando STAMPA. Attiva la finestra di dialogo nella quale vengono impostati i parametri per ottenere tavole stampate:

Comando STAMPA. Attiva la finestra di dialogo nella quale vengono impostati i parametri per ottenere tavole stampate: Stampare disegni Comando STAMPA Attiva la finestra di dialogo nella quale vengono impostati i parametri per ottenere tavole stampate: Su plotter Su stampante In formato elettronico Corso 2D: Stampa Disegni

Dettagli

MODULO 4: FOGLIO ELETTRONICO (EXCEL)

MODULO 4: FOGLIO ELETTRONICO (EXCEL) MODULO 4: FOGLIO ELETTRONICO (EXCEL) 1. Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei Personal computer. Essi

Dettagli

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

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali PowerPoint Come costruire una presentazione PowerPoint 1 Introduzione! PowerPoint è uno degli strumenti presenti nella suite Office di Microsoft! PowerPoint permette la realizzazione di presentazioni video

Dettagli

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso

2.0 Gli archivi. 2.1 Inserire gli archivi. 2.2 Archivio Clienti, Fornitori, Materiali, Noleggi ed Altri Costi. Impresa Edile Guida all uso 2.0 Gli archivi All interno della sezione archivi sono inserite le anagrafiche. In pratica si stratta di tutti quei dati che ricorreranno costantemente all interno dei documenti. 2.1 Inserire gli archivi

Dettagli

Piattaforma di scambio delle Garanzie di Origine Estere

Piattaforma di scambio delle Garanzie di Origine Estere Manuale d utilizzo 1 di 31 Indice dei Contenuti 1 Introduzione... 4 1 Accesso al portale Garanzie di Origine GO estere... 4 2 Primo accesso al portale GO estere (Scelta del profilo)... 4 2.1 Profilo Impresa

Dettagli

2 - Modifica. 2.1 - Annulla 2.2 - ANNULLA TOPOGRAFICO 2.3 - ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1

2 - Modifica. 2.1 - Annulla 2.2 - ANNULLA TOPOGRAFICO 2.3 - ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1 2 - Modifica FIGURA 2.1 Il menu a tendina Modifica contiene il gruppo di comandi relativi alla selezione e alla gestione delle proprietà delle entità del disegno e alla gestione dei layer. I comandi sono

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Programmazione Java: Interfacce grafiche (GUI)

Programmazione Java: Interfacce grafiche (GUI) Programmazione Java: Interfacce grafiche (GUI) romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp ( 1 ) (GUI) Interfacce grafiche Rendere facili le cose semplici e possibili le cose difficili

Dettagli

Esercitazione n. 10: HTML e primo sito web

Esercitazione n. 10: HTML e primo sito web + Strumenti digitali per la comunicazione A.A 0/4 Esercitazione n. 0: HTML e primo sito web Scopo: Creare un semplice sito web con Kompozer. Il sito web è composto da una home page, e da altre due pagine

Dettagli

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione completa delle fidelity card & raccolta punti Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 3 La gestione delle fidelity card nel POS... 4 Codificare una nuova fidelity

Dettagli

Definire gli attributi dei blocchi

Definire gli attributi dei blocchi Definire gli attributi dei blocchi Attributi:Informazioni associate ad un blocco Definire gli attributi Menu: Disegna Blocco Attributo Comando: DEFATT Utilizzo riga di comando: -DEFATT Note Lo stile di

Dettagli

GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER

GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE VERSIONE MSDE/SQL SERVER MANUALE DI INSTALLAZIONE GUARINI PATRIMONIO CULTURALE SOMMARIO 1. Installazione guarini patrimonio culturale MSDE... 3 1.1 INSTALLAZIONE MOTORE MSDE...4 1.2 INSTALLAZIONE DATABASE GUARINI PATRIMONIO CULTURALE

Dettagli

Corso BusinessObjects SUPERVISOR

Corso BusinessObjects SUPERVISOR Corso BusinessObjects SUPERVISOR Il modulo SUPERVISOR permette di: impostare e gestire un ambiente protetto per prodotti Business Objects distribuire le informazioni che tutti gli utenti dovranno condividere

Dettagli

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) -

per interventi strutturali di rafforzamento locale o di miglioramento sismico, - art. 2, comma 1, lettere b) e c) - INTERVENTI DI RIDUZIONE DEL RISCHIO SISMICO DISCIPLINATI DAL PROGRAMMA O.P.C.M. n. 4007 del 29/03/2012 Manuale del software per la gestione delle richieste di contributo per interventi strutturali di rafforzamento

Dettagli

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

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera WORD per WINDOWS95 1.Introduzione Un word processor e` come una macchina da scrivere ma con molte più funzioni. Il testo viene battuto sulla tastiera ed appare sullo schermo. Per scrivere delle maiuscole

Dettagli

Tabelle 3.4. Unità didattica. Copyright 2009 Apogeo. Obiettivi. Prerequisiti

Tabelle 3.4. Unità didattica. Copyright 2009 Apogeo. Obiettivi. Prerequisiti Unità didattica 3.4 In questa unità realizzerai un annuncio da appendere in una bacheca per la vendita del tuo lettore MP3. Il tuo annuncio deve essere gradevole e armonioso in modo che, tra tanti altri

Dettagli

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie Facoltà di Scienze Motorie CHE COS È UN FOGLIO ELETTRONICO Una tabella che contiene parole e numeri che possono essere elaborati applicando formule matematiche e funzioni statistiche. Esame di Informatica

Dettagli