RETI DI CALCOLATORI Linguaggio Java: La Grafica
|
|
|
- Gildo Bellini
- 10 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: La Grafica Prof. Franco Zambonelli Lucidi realizzati in collaborazione con Ing. Enrico Denti - Univ. Bologna Denti, Zambonelli - GRAFICA in JAVA - 1
2 JAVA E LA GRAFICA L architettura Java è graphics-ready Package java.awt il primo package grafico (Java 1.0) indipendente dalla piattaforma... o quasi! Package javax.swing il nuovo package grafico (Java 2; versione preliminare da Java 1.1.6) scritto esso stesso in Java, realmente indipendente dalla piattaforma SWING: ARCHITETTURA Swing definisce una gerarchia di classi che forniscono ogni tipo di componente grafico finestre, pannelli, frame, bottoni, aree di testo, checkbox, liste a discesa, etc etc Programmazione event-driven : non più algoritmi stile input/elaborazione/output ma reazione agli eventi che l utente, in modo interattivo, genera sui componenti grafici Concetti di evento e di ascoltatore degli eventi Si può considerare un paradigma di programmazione a sé stante!! Denti, Zambonelli - GRAFICA in JAVA - 2
3 SWING: GERARCHIA DI CLASSI Object AbstractButton Window Component Container JComponent JLabel JList JMenuBar JPanel JScrollBar Frame Dialog JTextComponent JFrame JDialog JTextArea JTextField Denti, Zambonelli - GRAFICA in JAVA - 3
4 SWING: GERARCHIA DI CLASSI JButton AbstractButton JMenuItem JToggleButton JCheckBox JRadioButton Container: tutti i componenti principali sono contenitori, destinati a contenere altri componenti Window: le finestre sono casi particolari di contenirori e si distinguono in frame e finestre di dialogo Jframe: componente finestra principale: ha un aspetto grafico, una cornice ridimensionabile e un titolo Jcomponent: è il generico componente grafico Jpanel: il pannello, un componente destinato a contenere altri componenti grafici per organizzarli Denti, Zambonelli - GRAFICA in JAVA - 4
5 SWING: UN ESEMPIO La più semplice applicazione grafica consiste in una classe il cui main crea un JFrame e lo rende visibile col metodo show(): import java.awt.*; import javax.swing.*; public class EsSwing1 { public static void main(string[] v){ JFrame f = new JFrame("Esempio 1"); // crea un nuovo JFrame Inizialmente invisibile // con titolo "Esempio 1" f.show(); // mostra il JFrame RISULTATO: I comandi standard delle finestre sono già attivi ATTENZIONE: la chiusura non distrugge il Frame ma lo nasconde soltando. Per chiuderlo effettivamente ci vuole Ctrl+C Denti, Zambonelli - GRAFICA in JAVA - 5
6 SWING: ESEMPIO 1 Con riferimento all'esempio precedente: La finestra che così nasce ha però dimen-sioni nulle (bisogna allargarla "a mano") Per impostare le dimensioni di un qualunque contenitore si usa setsize(), che ha come parametro un opportuno oggetto di classe Dimension: f.setsize(new Dimension(300,150)); // le misure x,y sono in pixel // tutto lo schermo: 800*600, 1024*768, etc. Inoltre, la finestra viene visualizzata nell'an-golo superiore sinistro dello schermo Per impostare la posizione di un qualunque contenitore si usa setlocation(): f.setlocation(200,100)); // (0,0) = angolo superiore sinistro Posizione e dimensioni si possono anche fissare insieme, col metodo setbounds() Denti, Zambonelli - GRAFICA in JAVA - 6
7 SWING: ESEMPIO MIGLIORATO Un esempio di finestra già dimensionata e collocata nel punto previsto dello schermo: import java.awt.*; import javax.swing.*; public class EsSwing1 { public static void main(string[] v){ JFrame f = new JFrame("Esempio 1"); f.setbounds(200,100, 300,150) f.show(); PERSONALIZZARE IL JFRAME Un approccio efficace consiste nell'estendere JFrame, definendo una nuova classe: public class MyFrame extends JFrame { public MyFrame(){ super(); setbounds(200,100,300,150); public MyFrame(String titolo){ super(titolo); setbounds(200,100, 300,150); Denti, Zambonelli - GRAFICA in JAVA - 7
8 ESEMPIO 2 Questo esempio usa un MyFrame: import java.awt.*; import javax.swing.*; public class EsSwing2 { public static void main(string[] v){ MyFrame f = new MyFrame("Esempio 2"); // posizione (200,100) dimensione (300,150) f.show(); Denti, Zambonelli - GRAFICA in JAVA - 8
9 STRUTTURA DEL FRAME In Swing non si possono aggiungere nuovi componenti direttamente al Jframe Però Dentro a ogni JFrame c'è un Container, recuperabile col metodo getcontentpane(): è a lui che vanno aggiunti i nuovi componenti Tipicamente, si aggiunge un pannello (un JPanel o una nostra versione più specifica), tramite il metodo add() sul pannello si può disegnare (forme, immagini...)...o aggiungere pulsanti, etichette, icone, (cioè aggiungere altri componenti!) ESEMPIO 3 Aggiunta di un pannello al Container di un frame, tramite l'uso di getcontentpane(): import java.awt.*; import javax.swing.*; public class EsSwing3 { public static void main(string[] v){ MyFrame f = new MyFrame("Esempio 3"); Container c = f.getcontentpane(); JPanel panel = new JPanel(); c.add(panel); f.show(); NOTA: non abbiamo disegnato niente, né aggiunto componenti, sul pannello! Però, avendo, il pannello, potremmo usarlo per disegnare e inserire altri componenti! Denti, Zambonelli - GRAFICA in JAVA - 9
10 DISEGNARE SU UN PANNELLO Per disegnare su un pannello occorre: definire una propria classe (MyPanel) che estenda il JPanel originale in tale classe, ridefinire paintcomponent(), che è il metodo (ereditato da JComponent) che si occupa di disegnare il componente ATTENZIONE: il nuovo paintcomponent() da noi definito deve sempre richiamare il metodo paintcomponent() originale, tramite super Il nostro pannello personalizzato: public class MyPanel extends JPanel { // nessun costruttore, va bene il default public void paintcomponent(graphics g){ super.paintcomponent(g);... // qui aggiungeremo le nostre istruzioni di // disegno // g è un oggetto gestito dal sistema a cui ci si // rivolge per disegnare Graphics g, di cui non ci dobbiamo occupare esplicitamente, è l'oggetto del sistema che effettivamente disegna ciò che gli ordiniamo Denti, Zambonelli - GRAFICA in JAVA - 10
11 DISEGNARE SU UN PANNELLO Quali metodi per disegnare? drawimage(), drawline(), drawrect(), drawroundrect(), draw3drect(), drawoval(), drawarc(), drawstring(), drawpolygon(), drawpolyline() fillrect(), fillroundrect(), fill3drect(), filloval(), fillarc(), fillpolygon(), fillpolyline() getcolor(), getfont(), setcolor(), setfont(), copyarea(), clearrect() Denti, Zambonelli - GRAFICA in JAVA - 11
12 ESEMPIO 4: DISEGNO DI FIGURE Il pannello personalizzato con il disegno: public class MyPanel extends JPanel { public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor(color.red); // white, gray, lightgray, darkgray // red, green, yellow, pink, etc. etc. g.fillrect(20,20, 100,80); g.setcolor(color.blue); g.drawrect(30,30, 80,60); g.setcolor(color.black); g.drawstring("ciao",50,60); Il main che lo crea e lo inserisce nel frame: import java.awt.*; import javax.swing.*; public class EsSwing4 { public static void main(string[] v){ MyFrame f = new MyFrame("Esempio 4"); // potremmo anche usare un JFrame standard Container c = f.getcontentpane(); MyPanel panel = new MyPanel(); c.add(panel); f.show(); Denti, Zambonelli - GRAFICA in JAVA - 12
13 ESEMPIO: DISEGNO DI FIGURE Per cambiare font: si crea un oggetto Font appropriato lo si imposta come font predefinito usando il metodo setfont() Font f1 = new Font("Times", Font.BOLD, 20); // nome del font, stile, dimensione in punti // stili possibili: Font.PLAIN, Font.ITALIC g.setfont(f1); Recuperare le proprietà di un font Il font corrente si recupera con getfont() Dato un Font, le sue proprietà si recuperano con getname(), getstyle(), getsize() e si verificano con i predicati isplain(), isbold(), isitalic() Font f1 = g.getfont(); int size = f1.getsize(); int style = f1.getstyle(); String name = f1.getname(); Denti, Zambonelli - GRAFICA in JAVA - 13
14 ESEMPIO: GRAFICO DI F(X) - 1 Per disegnare il grafico di una funzione occorre creare un'apposita classe FunctionPanel che estenda JPanel, ridefinendo il metodo paintcomponent() come appropriato, ad esempio: sfondo bianco, cornice nera assi cartesiani rossi, con estremi indicati funzione disegnata in blu creare, nel main, un oggetto di tipo FunctionPanel Definizione del solito main: import java.awt.*; import javax.swing.*; public class EsSwing5 { public static void main(string[] v){ JFrame f = new JFrame("Grafico f(x)"); Container c = f.getcontentpane(); FunctionPanel p = new FunctionPanel(); c.add(p); f.setbounds(100,100,500,400); f.show(); Denti, Zambonelli - GRAFICA in JAVA - 14
15 ESEMPIO: GRAFICO DI F(X) - 2 Definizione del pannello apposito: class FunctionPanel extends JPanel { int xmin=-7, xmax=7, ymin=-1, ymax=1; // gli intervalli in cui vogliamo graficare int larghezza=500, altezza=400; // corrispondono alla grandezza del Jframe // ERA MEGLIO USARE UN COSTRUTTORE. float fattorescalax, fattorescalay; public void paintcomponent(graphics g){ super.paintcomponent(g); // va fatto sempre setbackground(color.white); // fondo bianco fattorescalax=larghezza/((float)xmax-xmin); fattorescalay=altezza/((float)ymax-ymin); // dobbiamo fare le proporzioni tra // l'intervallo di valori della finestra // (500*400) e l'intervallo da graficare (14*2) // incornicia il grafico in nero g.setcolor(color.black); g.drawrect(0,0,larghezza-1,altezza-1); // e disegna degli assi cartesiani g.setcolor(color.red); g.drawline(0,altezza/2, larghezza-1,altezza/2); g.drawline(larghezza/2,0,larghezza/2,altezza-1); // scrittura valori estremi degli assi g.drawstring(""+xmin, 5,altezza/2-5); g.drawstring(""+xmax, larghezza-10,altezza/2-5); g.drawstring(""+ymax, larghezza/2+5,15); g.drawstring(""+ymin, larghezza/2+5,altezza-5); Continua.. Denti, Zambonelli - GRAFICA in JAVA - 15
16 Continua grafico della funzione f(x) // disegna il grafico della funzione in blu g.setcolor(color.blue); setpixel(g,xmin,f(xmin)); // punto iniziale for (int ix=1; ix<larghezza; ix++){ // per ognuno dei pixel della finestra float x = xmin+((float)ix)/fattorescalax; setpixel(g,x,f(x)); // definizione della funzione, // statica, da graficare static float f(float x){ return (float)math.sin(x); // sin(x) è la funzione (statica!) //che decidiamo di graficare: //ovviamente potrebbe essere qualsiasi funzione // questa serve per riportare i valori della // funzione sui valori della finestra void setpixel(graphics g, float x, float y){ if (x<xmin x>xmax y<ymin y>ymax ) return; int ix = Math.round((x-xMin)*fattoreScalaX); int iy = altezza-math.round( (y-ymin)*fattorescalay); g.drawline(ix,iy,ix,iy); // disegna in effetti un singolo punto Denti, Zambonelli - GRAFICA in JAVA - 16
17 ESEMPIO: GRAFICO DI F(X) - 4 Ecco ciò che si ottiene: Denti, Zambonelli - GRAFICA in JAVA - 17
18 DISEGNARE IMMAGINI Come si disegna un'immagine presa da un file (p.e. una immagine JPG)? 1) ci si procura un apposito oggetto Image 1a) si recupera il "toolkit di default": Toolkit tk = Toolkit.getDefaultToolkit(); 1b) si chiede al toolkit di recuperare l'immagine: Image img = tk.getimage("new.gif"); Sono supportati i formati GIF e JPEG Si può anche fornire un URL: URL url =...; Image img = tk.getimage(url); 2) si disegna l'immagine con drawimage() PROBLEMA: drawimage() ritorna al chiamante subito dopo aver iniziato il caricamento dell'immagine, senza attendere di averla caricata. C'è il rischio che l'immagine non faccia in tempo a visualizzarsi prima della fine del programma. SOLUZIONE: si crea un oggetto MediaTracker dedicato ad occuparsi del caricamento dell'immagine, e a cui appunto il caricamento dell'immagine (o delle immagini), e gli si affida l'immagine da caricare Denti, Zambonelli - GRAFICA in JAVA - 18
19 Uso del MediaTracker DISEGNARE IMMAGINI 1) Nel costruttore del pannello, si crea un oggetto MediaTracker, precisandogli su quale componente avverrà il disegno... Di solito il parametro è this (il pannello stesso) MediaTracker mt = new MediaTracker(this); 2)...si aggiunge l'immagine al MediaTracker... mt.addimage(img,1); Il secondo parametro è un numero intero, a nostra scelta, che identifica univocamente l'immagine. 3)..e gli si dice di attendere il caricamento di tale immagine, usando il numero intero (ID) da noi assegnato try { mt.waitforid(1); catch (InterruptedException e) { Occorre un blocco try/catch perché l'attesa potrebbe essere interrotta da un'eccezione. Se si devono attendere molte immagini: try { mt.waitforall(); catch (InterruptedException e) { Denti, Zambonelli - GRAFICA in JAVA - 19
20 DISEGNARE IMMAGINI: ESEMPIO public class ImgPanel extends JPanel { Image img1; public ImgPanel(){ Toolkit tk = Toolkit.getDefaultToolkit(); img1 = tk.getimage("new.gif"); MediaTracker mt = new MediaTracker(this); mt.addimage(img1, 1); // aggiunta di eventuali altre immagini try { mt.waitforall(); catch (InterruptedException e){ public void paintcomponent(graphics g){ super.paintcomponent(g); g.drawimage(img1, 30, 30, null); /* Immagine (img1), posizione nel pannello (30,30) e un oggetto (null, cioè nessuno) a cui notificare l'avvenuto caricamento */ Denti, Zambonelli - GRAFICA in JAVA - 20
21 ESEMPIO 7: IL COMPONENTE JLabel Oltre a disegnare, dentro ai pannelli si possono inserire altre componenti... Il componente JPanel non fa altro che scrivere qualcosa nel pannello. Il solito main: import java.awt.*; import javax.swing.*; public class EsSwing7 { public static void main(string[] v){ JFrame f = new JFrame( Esempio 7"); Container c = f.getcontentpane(); Es7Panel p = new Es7Panel(); c.add(p); f.pack(); //pack dimensiona il frame in modo da //contenere esattamente il pannello f.show(); public class Es7Panel extends JPanel { public Es7Panel(){ super(); JLabel l = new JLabel("Etichetta"); add(l); Denti, Zambonelli - GRAFICA in JAVA - 21
22 OLTRE IL SOLO DISEGNO: GLI EVENTI Finora, la grafica considerata consisteva nel puro disegno di forme e immagini È grafica "passiva": non consente all'utente alcuna interazione si può solo guardare il disegno...!! La costruzione di interfacce grafiche richiede invece interattività l'utente deve poter premere bottoni, scrivere testo, scegliere elementi da liste, etc etc Componenti attivi, che generano eventi Denti, Zambonelli - GRAFICA in JAVA - 22
23 SWING: GERARCHIA DI CLASSI JButton AbstractButton JLabel JList JMenuItem JToggleButton JMenuBar JCheckBox JRadioButton JComponent JPanel JScrollBar JTextComponent JTextArea JTextField JLabel: UNICO componente passivo, cioè che non genera eventi Gli altri sono tutti componenti ATTIVI che generano eventi Esempio: JButton: è il classico "bottone", e genera un evento quando viene premuto Denti, Zambonelli - GRAFICA in JAVA - 23
24 EVENTI Ogni componente grafico, quando si opera su di esso, genera un evento che descrive cosa è accaduto (attenzione: il concetto di evento non si applica necessariamente solo agli oggetti grafici, ma è generalmente con la grafica che esso assume rilevanza e comprensione immediata) Tipicamente, ogni componente può generare molti tipi diversi di eventi, in relazione a ciò che sta accadendo un bottone può generare l evento azione che significa che è stato premuto una casella di opzione può generare l evento stato modificato per la casella è stata selezionata o deselezionata In Java, un evento è un oggetto, istanza di (una sottoclasse di) java.util.eventobject java.util.eventobject java.awt.awtevent package java.awt.event AdjustmentEvent ActionEvent ComponentEvent ItemEvent TextEvent ContainerEvent InputEvent WindowEvent FocusEvent PaintEvent KeyEvent MouseEvent Denti, Zambonelli - GRAFICA in JAVA - 24
25 GESTIONE DEGLI EVENTI Ogni componente viene associato a un ascoltatore degli eventi (un oggetto che implementa l'oppor-tuna interfaccia Listener) L'ascoltatore l'evento gestisce Event Listener Quando si agisce sul componente (ad es., si preme il pulsante) si ha un evento, che è inviato all'ascoltatore Quando si interagisce con un componente "attivo" si genera un evento, che è un oggetto Event della (sotto)classe opportuna l oggetto Event contiene tutte le informazioni sull evento (chi l ha creato, cosa è successo, etc) Il sistema invia tale oggetto Evento all oggetto ascoltatore degli eventi preventiva-mente registrato come tale, che gestisce l evento. L attività non è più algoritmica (input / compu-tazione / output), è interattiva e reattiva Denti, Zambonelli - GRAFICA in JAVA - 25
26 IL PULSANTE JButton Quando viene premuto, un bottone genera un evento di classe ActionEvent Questo evento viene inviato dal sistema allo specifico ascoltatore degli eventi per quel bottone. L'acoltatore degli eventi deve implementare la interfaccia ActionListener, può essere un oggetto di un'altra classe al di fuori del pannello.. o può essere anche il pannello stesso nel quale (this) Tale ascoltatore degli eventi deve implementare il metodo definito nella interfaccia actionlistener void actionperformed(actionevent ev); che gestisce l'evento, nel senso che reagisce all'evento con opportune azioni Denti, Zambonelli - GRAFICA in JAVA - 26
27 ESEMPIO 8: USO DI JButton Un'applicazione fatta da un'etichetta (JLabel) e un pulsante (JButton) L'etichetta può valere "Tizio" o "Caio"; all'inizio vale "Tizio" Premendo il bottone, l'etichetta deve commutare, diventando "Caio" se era "Tizio", o "Tizio" se era "Caio" Architettura dell'applicazione Un pannello che contiene etichetta e pulsante il costruttore del pannello crea l'etichetta e il pulsante Il pannello fa da ascoltatore degli eventi per il pulsante il costruttore del pannello imposta il pannello stesso come ascoltatore degli eventi del pulsante Denti, Zambonelli - GRAFICA in JAVA - 27
28 // Il codice del pannello public class Es8Panel extends JPanel implements ActionListener{ private JLabel l; public Es8Panel(){ super(); l = new JLabel("Tizio"); add(l); JButton b = new JButton("Tizio/Caio"); // Tizio/Caio è l'etichetta del pulsante b.addactionlistener(this); // registra l'oggetto panel stesso come // ascoltatore degli eventi add(b); Eventi da gestire: l'evento di azione sul pulsante deve provocare il cambio del testo dell'etichetta Come si fa? il testo dell'etichetta si può recuperare con gettext() e cambiare con settext() l'ascoltatore dell'evento, che implementa il metodo ActionPerformed(), deve recuperare il testo dell'etichetta e cambiarlo public void actionperformed(actionevent e){ if (l.gettext().equals("tizio")) l.settext("caio"); else l.settext("tizio"); Denti, Zambonelli - GRAFICA in JAVA - 28
29 ESEMPIO 8: Il solito main: import java.awt.*; import javax.swing.*; import java.awt.event.*; // bisogna importare il package degli eventi! public class EsSwing8 { public static void main(string[] v){ JFrame f = new JFrame( Esempio 7"); Container c = f.getcontentpane(); Es8Panel p = new Es8Panel(); c.add(p); f.pack(); f.show(); Denti, Zambonelli - GRAFICA in JAVA - 29
30 ESEMPIO 8: UNA VARIANTE Architettura dell'applicazione Un pannello che contiene etichetta e pulsante il costruttore del pannello crea l'etichetta e il pulsante L'ascoltatore degli eventi per il pulsante è un oggetto separato il costruttore del pan-nello imposta tale oggetto come ascoltatore degli eventi del pulsante public class Es8Panel extends JPanel { public Es8Panel(){ super(); JLabel l = new JLabel("Tizio"); add(l); JButton b = new JButton("Tizio/Caio"); b.addactionlistener(new Es8Listener(l) ); // crea un oggetto es8listener e lo imposta // come ascoltatore degli eventi del bottone add(b); L'ascoltatore degli eventi: class Es8Listener implements ActionListener{ public void actionperformed(actionevent e){ if (l.gettext().equals("tizio")) l.settext("caio"); else l.settext("tizio"); private JLabel l; public Es8Listener(JLabel label){l=label; // deve farsi dare come parametro la Jlabel su // cui dovrà andare ad agire Denti, Zambonelli - GRAFICA in JAVA - 30
31 CONFRONTO FRA LE DUE VERSIONI Event Listener Pannello Nella prima versione, l'ascoltatore è il pannello stesso Pannello Event Listener Nella seconda, l'ascoltatore è un altro oggetto Denti, Zambonelli - GRAFICA in JAVA - 31
32 ESEMPIO 9: DUE PULSANTI Scopo dell'applicazione Cambiare il colore di sfondo tramite due pulsanti: uno lo rende rossa, l'altro azzurro Architettura dell'applicazione Un pannello che contiene i due pulsanti creati dal costruttore del pannello Un unico ascoltatore degli eventi per entrambi i pulsanti necessità di capire, in actionperformed(), quale pulsante è stato premuto Il codice del pannello: public class Es9Panel extends JPanel implements ActionListener { JButton b1, b2; public Es9Panel(){ super(); b1 = new JButton("Rosso"); b2 = new JButton("Azzurro"); b1.addactionlistener(this); b2.addactionlistener(this); // il pannello fa da ascoltatore degli // eventi per entrambi i pulsanti add(b1); add(b2);... Denti, Zambonelli - GRAFICA in JAVA - 32
33 ESEMPIO 9, continua il codice del pannello... public void actionperformed(actionevent e){ Object pulsantepremuto = e.getsource(); // si recupera il riferimento all'oggetto // che ha generato l'evento if (pulsantepremuto==b1) // e si confronta questa con i riferimenti // agli oggetti bottoni b1 e b2 setbackground(color.red); if (pulsantepremuto==b2) setbackground(color.cyan); Dato l'oggetto-evento, il suo metodo getsource restituisce un riferimento all'oggetto che ha generato l'evento stesso. Un modo alternativo per capire chi aveva generato l'evento poteva essere quello di guardare l'etichetta associata al pulsante: String nome = e.getactioncommand(); if nome.equals("rosso") Denti, Zambonelli - GRAFICA in JAVA - 33
34 ESEMPIO 9: VARIANTE Prima abbiamo definito un singolo ascoltatore per entrambi i pulsanti: Versione con un unico ascoltatore per entrambi i pulsanti Event Listener Pannello Il metodo actionperformed() dell'ascoltatore dovrà discriminare quale pulsante ha generato l'evento Se definiamo ascoltatori diversi per eventi diversi il sistema provvederà ad inviare gli eventi solo all'ascoltatore opportuno, e il metodo actionperformed non deve più preoccuparsi di sapere quale pulsante è stato premuto Pannello Event Listener Event Listener Denti, Zambonelli - GRAFICA in JAVA - 34
35 ESEMPIO 9: variante IL PANNELLO: class Es9PanelBis extends JPanel { public Es9PanelBis(){ super(); JButton b1 = new JButton("Rosso"); JButton b2 = new JButton("Azzurro"); b1.addactionlistener( new Es9Listener(this,Color.red) ); b2.addactionlistener( new Es9Listener(this,Color.cyan) ); // crea due oggetti ascoltatori e a ognuno // passa il riferimento del pannello su cui // agire (this) e il colore da usare add(b1); add(b2); L'ascoltatore degli eventi: class Es9Listener implements ActionListener{ private JPanel pannello; private Color colore; public Es9Listener(JPanel p, Color c){ pannello = p; colore = c; public void actionperformed(actionevent e){ pannello.setbackground(colore); Denti, Zambonelli - GRAFICA in JAVA - 35
36 GLI EVENTI DI FINESTRA Le operazioni sulle finestre (finestra chiusa, aperta, minimizzata, ingrandita ) generano un WindowEvent Gli eventi di finestra sono gestiti dai metodi dichiarati dall'interfaccia WindowListener public void windowclosed(windowevent e); public void windowclosing(windowevent e); public void windowopened(windowevent e); public void windowiconified(windowevent e); public void windowdeiconified(windowevent e); public void windowactivated(windowevent e); public void windowdeactivated(windowevent e); ogni metodo viene scatenato dall'evento appropriato (p.e., quando si iconifica una finestra, nell'ascoltatore viene invocato il metodo windowiconified())e gestisce l'evento appropriato, automaticamente Il comportamento predefinito di questi metodi va già bene tranne windowclosing(), che non fa uscire l'applicazione: nasconde solo la finestra. Per far sì che chiudendo la finestra del frame l'applicazione venga chiusa, il frame deve implementare l'interfaccia WindowListener, e ridefinire WindowClosing in modo che invochi System.exit() Gli altri metodi devono essere formalmente implementati, ma, non dovendo svolgere compiti precisi, possono essere definiti semplicemente con un corpo vuoto: public void WindowOpened(WindowEvent e){ Denti, Zambonelli - GRAFICA in JAVA - 36
37 ESEMPIO 9 CON GESTIONE DELLA CHIUSURA DELLA FINESTRA Frame Pannello Action Listener Action Listener Window Listener Ai due ActionListener già esi-stenti, agganciati ai singoli pul-santi, si aggiunge un Window-Listener, associato al Jframe che permette di gestire l'evento di chiusura della finestra facendo terminare l'applicazione Denti, Zambonelli - GRAFICA in JAVA - 37
38 ESEMPIO 9 CON CHIUSURA public class EsSwing9 { public static void main(string[] v){ JFrame f = new JFrame("Esempio 9"); Container c = f.getcontentpane(); Es9Panel p = new Es9Panel(); c.add(p); f.addwindowlistener( new Terminator() ); // Terminator è la classe che implementa // l'interfaccia WindowListener f.pack(); f.show(); class Terminator implements WindowListener { public void windowclosed(windowevent e){ public void windowclosing(windowevent e){ System.exit(0); // in questo modo chiudendo la finestra // si esce dalla applicazione public void windowopened(windowevent e){ public void windowiconified(windowevent e){ public void windowdeiconified(windowevent e){ public void windowactivated(windowevent e){ public void windowdeactivated(windowevent e){ Denti, Zambonelli - GRAFICA in JAVA - 38
39 IL CAMPO DI TESTO JTextField Il JTextField è un componente "campo di testo", usabile per scrivere e visualizzare una riga di testo il campo di testo può essere editabile o no il testo è accessibile con gettext() / settext() Il campo di testo è parte di un oggetto Document Ogni volta che il testo in esso contenuto cambia si genera un DocumentEvent nel documento che contiene il campo di testo Se però è sufficiente registrare i cambiamenti solo quando si preme INVIO, basta gestire semplicemente il solito ActionEvent ESEMPIO 10 Un'applicazione comprendente un pulsante e due campi di testo uno per scrivere testo, l'altro per visualizzarlo Quando si preme il pulsante, il testo del secondo campo (non modificabile dall'utente) viene cambiato, e reso uguale a quello scritto nel primo L'unico evento è ancora il pulsante premuto: ancora non usiamo il DocumentEvent Denti, Zambonelli - GRAFICA in JAVA - 39
40 Il solito main: ESEMPIO 10-2 public class EsSwing10 { public static void main(string[] v){ JFrame f = new JFrame("Esempio 10"); Container c = f.getcontentpane(); Es10Panel p = new Es10Panel(); c.add(p); f.addwindowlistener( new Terminator() ); f.setsize(300,120); f.show(); Il pannello: class Es10Panel extends JPanel implements ActionListener { JButton b; JTextField txt1, txt2; public Es10Panel(){ super(); b = new JButton("Aggiorna"); txt1=new JTextField("Scrivere qui il testo", 25); txt2 = new JTextField(25); // larghezza in caratt. txt2.seteditable(false); // non modificabile b.addactionlistener(this); add(txt1); add(txt2); add(b); Denti, Zambonelli - GRAFICA in JAVA - 40
41 ESEMPIO 10-3 La gestione dell'evento "pulsante premuto": public void actionperformed(actionevent e){ txt2.settext( txt1.gettext() ); Denti, Zambonelli - GRAFICA in JAVA - 41
42 ESEMPIO 11: VARIANTE ALL'ESEMPIO 10 Niente più pulsante, solo i due campi di testo Sfruttiamo la pressione del tasto INVIO come pulsante, quindi intercettiamo l'actionevent (ancora non usiamo il DocumentEvent) Quando si preme INVIO, il testo del secondo campo (non modificabile dall'utente) viene cambiato, e reso uguale a quello scritto nel primo Dobbiamo mettere un ActionListener in Ascolto sul campo di testo txt1 pronto ad intercettare gli eventi di azione ActionEvent (che si scatena con la pressione del tasto invio) Denti, Zambonelli - GRAFICA in JAVA - 42
43 ESEMPIO 11 class Es11Panel extends JPanel implements ActionListener { JTextField txt1, txt2; public Es11Panel(){ super(); txt1=new JTextField("Scrivere qui il testo", 25); txt2 = new JTextField(25); txt2.seteditable(false); txt1.addactionlistener(this); // gli eventi di txt1 vengono ascoltati da this add(txt1); add(txt2);... La gestione dell'evento rimane inalterata: è cambiato solo colui che genera l'evento. Denti, Zambonelli - GRAFICA in JAVA - 43
44 ESEMPIO 12: ULTERIORE VARIANTE Sfruttiamo il concetto di DOCUMENTO che sta dietro a ogni campo di testo A ogni modifica del contenuto, il documento di cui il campo di testo fa parte genera un DocumentEvent per segnalare l'avvenuto cambiamento Tale evento dev'essere gestito da un opportuno DocumentListener cioè da un oggetto di una classe che implementi l'interfaccia DocumentListener DOCUMENT LISTENER L'interfaccia DocumentListener dichiara tre metodi: void insertupdate(documentevent e); void removeupdate(documentevent e); void changedupdate(documentevent e); Il terzo non è mai chiamato da un JTextField, serve solo per altri tipi di componenti L'oggetto-evento DocumentEvent passato come parametro in realtà è inutile, in quanto cosa sia accaduto è già implicito nel metodo chiamato; esso esiste solo per uniformità. La stessa cosa valeva per i WindowListener. Denti, Zambonelli - GRAFICA in JAVA - 44
45 ESEMPIO 12-2 Nel nostro caso: l'azione da svolgere in caso di inserimento o rimozione di caratteri è identica, quindi i due metodi void insertupdate(documentevent e); void removeupdate(documentevent e); saranno identici (purtroppo vanno comunque imple-mentati entrambi) Il metodo changedupdate(documentevent e) è pure inutile, dato che JTextField non lo chiama, ma va comunque formalmente implementato. Denti, Zambonelli - GRAFICA in JAVA - 45
46 ESEMPIO 12: CODICE import javax.swing.event.*; // solito main class Es12Panel extends JPanel implements DocumentListener { // deve implementare l'interfaccia JTextField txt1, txt2; public Es12Panel(){ super(); txt1= new JTextField("Scrivere qui il testo", 25); txt2 = new JTextField(25); txt2.seteditable(false); txt1.getdocument().adddocumentlistener(this); // ricava il documento di cui il campo // di test txt1 fa parte e gli associa il // pannello come listener add(txt1); add(txt2); // La gestione dell'evento: public void insertupdate(documentevent e){ txt2.settext(txt1.gettext()); public void removeupdate(documentevent e){ txt2.settext(txt1.gettext()); public void changedupdate(documentevent e){ // implementazione formale Ora, a ogni inserimento o cancellazione di caratteri l'aggiornamento è automatico Denti, Zambonelli - GRAFICA in JAVA - 46
47 ESEMPIO: UNA MINI-CALCOLATRICE Architettura: un pannello con un campo di testo e sei pulsanti un unico ActionListener per tutti i pulsanti (è il vero calcolatore) Gestione degli eventi: Ogni volta che si preme un pulsante: si recupera il nome del pulsante (è la successiva operazione da svolgere) si legge il valore nel campo di testo si svolge l'operazione precedente Esempio: = + 8 = quando si preme +, si memorizzano sia 15 sia l'operazione + quando si preme -, si legge 14, si fa la somma 15+14, si memorizza 29, e si memorizza l'operazione - quando si preme =, si legge 3, si fa la sottrazione 29-3, si memorizza 26, e si memorizza l'operazione = quando si preme + (dopo l' =), è come essere all'inizio: si memorizzano 26 (risultato precedente) e l'operazione + quando si preme =, si legge 8, si fa la somma 26+8, si memorizza 34, e si memorizza l'operazione = eccetera... Denti, Zambonelli - GRAFICA in JAVA - 47
48 MINI-CALCOLATRICE - 2 Il solito main: public class EsSwingCalculator { public static void main(string[] v){ JFrame f = new JFrame("Mini-calcolatrice"); Container c = f.getcontentpane(); CalcPanel p = new CalcPanel(); c.add(p); f.setsize(220,150); f.addwindowlistener(new Terminator()); // Per gestire la chiusura della finestra f.show(); Un pulsante con un font "personalizzato" : class CalcButton extends JButton { CalcButton(String n) { super(n); setfont(new Font("Courier",Font.BOLD,20)); // estendiamo Jbutton per personalizzare il font Denti, Zambonelli - GRAFICA in JAVA - 48
49 MINI-CALCOLATRICE - 3 Il pannello: class CalcPanel extends JPanel { JTextField txt; CalcButton sum, sub, mul, div, calc, canc; public CalcPanel(){ super(); txt = new JTextField(15); txt.sethorizontalalignment(jtextfield.right); calc = new CalcButton("="); sum = new CalcButton("+"); sub = new CalcButton("-"); mul = new CalcButton("*"); div = new CalcButton("/"); canc = new CalcButton("C"); add(txt); add(sum); add(sub); add(mul); add(div); add(calc); add(canc); Calculator calcolatore = new Calculator(txt); // l'unico ascoltatore è questo oggetto // calclatore che gestisce tutti gli eventi // e rappresenta il vero e proprio calcolatore sum.addactionlistener(calcolatore); sub.addactionlistener(calcolatore); mul.addactionlistener(calcolatore); div.addactionlistener(calcolatore); calc.addactionlistener(calcolatore); canc.addactionlistener(calcolatore); Denti, Zambonelli - GRAFICA in JAVA - 49
50 Il listener / calcolatore: MINI-CALCOLATRICE - 3 class Calculator implements ActionListener { double res = 0; JTextField display; String opprec = "nop"; public Calculator(JTextField t) { display = t; public void actionperformed(actionevent e){ double valore = Double.parseDouble(display.getText()); // recupera il valore dal campo di testo // e lo converte da stringa a double display.settext(""); display.requestfocus(); // fa si' che il campo di testo sia già // selezionato, pronto per scriverci dentro String operazione = e.getactioncommand(); // recupera il nome del pulsante premuto // e' un modo alternativo per capire, tra tanti // bottoni, quale e' ha generato l'evento if (operazione.equals("c")) { //cancella tutto res = valore = 0; opprec = new String("nop"); else { // esegui l'operazione precedente if (opprec.equals("+")) res += valore; else if (opprec.equals("-")) res -= valore; else if (opprec.equals("*")) res *= valore; else if (opprec.equals("/")) res /= valore; else if (opprec.equals("nop")) res = valore; display.settext(""+res); opprec = operazione; //la prossima operazione da eseguire è la corrente Denti, Zambonelli - GRAFICA in JAVA - 50
51 IL CHECKBOX (casella di opzione) Il JCheckBox è una "casella di opzione", che può essere selezionata o deselezionata lo stato è verificabile con isselected() e modificabile con setselected() Ogni volta che lo stato della casella cambia, si generano: un ActionEvent, come per ogni pulsante un ItemEvent, gestito da un ItemListener Solitamente conviene gestire l'itemevent, perché più specifico. L' ItemListener dichiara il metodo: public void itemstatechanged(itemevent e) che deve essere implementato dalla classe che realizza l'ascoltatore degli eventi. In caso di più caselle gestite dallo stesso listener, il metodo e.getitemselectable() restituisce un riferimento all'oggetto sorgente dell'evento. Denti, Zambonelli - GRAFICA in JAVA - 51
52 ESEMPIO 13 Un'applicazione comprendente una checkbox e un campo di testo (non modificabile), che riflette lo stato della checkbox Alla checkbox è associato un ItemListener, che intercetta gli eventi di selezione / deselezione implementando il metodo itemstatechanged() class Es13Panel extends JPanel implements ItemListener { JTextField txt; JCheckBox ck1; public Es13Panel(){ super(); txt = new JTextField(10); txt.seteditable(false); ck1 = new JCheckBox("Opzione"); ck1.additemlistener(this); add(ck1); add(txt); public void itemstatechanged(itemevent e){ if (ck1.isselected()) txt.settext("opzione attivata"); else txt.settext("opzione disattivata"); Denti, Zambonelli - GRAFICA in JAVA - 52
53 ESEMPIO 14: PIÙ CASELLE DI OPZIONE Un'applicazione con due checkbox e un campo di testo che ne riflette lo stato Lo stesso ItemListener è associato a entrambe le checkbox: usa e.getitemselectable() per dedurre quale casella è stata modificata Denti, Zambonelli - GRAFICA in JAVA - 53
54 ESEMPIO 14 class Es14Panel extends JPanel implements ItemListener { JTextField txt1, txt2; JCheckBox c1, c2; public Es14Panel(){ super(); txt1 = new JTextField(15); txt1.seteditable(false); txt2 = new JTextField(15); txt2.seteditable(false); c1 = new JCheckBox("Mele"); c1.additemlistener(this); c2 = new JCheckBox("Pere"); c2.additemlistener(this); add(c1); add(c2); add(txt1); add(txt2); public void itemstatechanged(itemevent e){ Object source = e.getitemselectable(); if (source==c1) txt1.settext("sono cambiate le mele"); else txt1.settext("sono cambiate le pere"); // ora si controlla lo stato globale String frase = (ck1.isselected()? "Mele " : "") + (ck2.isselected()? "Pere" : ""); txt2.settext(frase); Denti, Zambonelli - GRAFICA in JAVA - 54
55 IL RADIOBUTTON Il JRadioButton è una casella di opzione che fa parte di un gruppo: in ogni istante può essere attiva una sola casella del gruppo Quando si cambia la casella selezionata, si generano tre eventi un ItemEvent per la casella deselezionata, uno per la casella selezionata, e un ActionEvent da parte della casella selezionata (pulsante premuto) In pratica: si creano i JRadioButton che servono si crea un oggetto ButtonGroup e si aggiungono i JRadioButton al gruppo Denti, Zambonelli - GRAFICA in JAVA - 55
56 ESEMPIO 15 Un'applicazione comprendente un gruppo di tre radiobutton, con un campo di testo che ne riflette lo stato Solitamente conviene gestire l'actionevent (più che l'itemevent) perché ogni cambio di selezione ne genera uno solo (a fronte di due ItemEvent), il che semplifica la gestione. Denti, Zambonelli - GRAFICA in JAVA - 56
57 ESEMPIO 15 class Es15Panel extends JPanel implements ActionListener { JTextField txt; JRadioButton b1, b2, b3; ButtonGroup grp; public Es15Panel(){ super(); txt = new JTextField(15); txt.seteditable(false); b1 = new JRadioButton("Mele"); b2 = new JRadioButton("Pere"); b3 = new JRadioButton("Arance"); grp = new ButtonGroup(); grp.add(b1); grp.add(b2); grp.add(b3); b1.addactionlistener(this); add(b1); b2.addactionlistener(this); add(b2); b3.addactionlistener(this); add(b3); add(txt); public void actionperformed(actionevent e){ String scelta = e.getactioncommand(); txt.settext("scelta corrente: " + scelta); Denti, Zambonelli - GRAFICA in JAVA - 57
58 LA LISTA JList Una JList è una lista di valori fra cui si può sceglierne uno o più Quando si sceglie una voce si genera un evento ListSelectionEvent, gestito da un ListSelectionListener Il listener deve implementare il metodo void valuechanged(listselectionevent) Per recuperare la/e voce/i scelta/e si usano getselectedvalue() e getselectedvalues() Denti, Zambonelli - GRAFICA in JAVA - 58
59 ESEMPIO 16 Un'applicazione con una lista e un campo di testo che riflette la selezione corrente Per intercettare le selezioni occorre gestire il ListSelectionEvent Di norma, JList non mostra una barra di scorri-mento verticale: se la si vuole, va aggiunta a parte Denti, Zambonelli - GRAFICA in JAVA - 59
60 Il codice: ESEMPIO 16 class Es16Panel extends JPanel implements ListSelectionListener { JTextField txt; JList list; public Es16Panel(){ super(); txt = new JTextField(15); txt.seteditable(false); String voci[]={"rosso","giallo","verde", "Blu"; list = new JList(voci); list.addlistselectionlistener(this); add(list); add(txt); public void valuechanged(listselectionevent e){ String scelta = (String) list.getselectedvalue(); txt.settext("scelta corrente: " + scelta); Denti, Zambonelli - GRAFICA in JAVA - 60
61 ESEMPIO 16: VARIANTE Con gli usuali tasti SHIFT e CTRL, sono possibili anche selezioni multiple: con SHIFT si selezionano tutte le voci comprese fra due estremi, con CTRL si selezionano voci sparse getselectedvalue() restituisce solo la prima, per averle tutte occorre getselectedvalues() Per gestire le selezioni multiple basta cambiare l'implementazione di valuechanged(): public void valuechanged(listselectionevent e){ Object[] scelte = list.getselectedvalues(); StringBuffer s = new StringBuffer(); for (int i=0; i<scelte.length; i++) s.append((string)scelte[i] + " "); txt.settext("scelte: " + s); Denti, Zambonelli - GRAFICA in JAVA - 61
62 ESEMPIO 16: ULTERIORE VARIANTE Per aggiungere una barra di scorrimento, si sfrutta un JScrollPane, e si fissa un numero massimo di elementi visualizzabili per la lista: public Es18Panel(){... list = new JList(voci); JScrollPane pane = new JScrollPane(list); list.setvisiblerowcount(3); list.addlistselectionlistener(this); add(pane); // invece che add(list) add(txt); Denti, Zambonelli - GRAFICA in JAVA - 62
63 LA CASELLA COMBINATA Una JComboBox è una lista di valori a discesa, in cui si può o sceglierne uno, o scrivere un valore diverso combina il campo di testo con la lista di valori Per configurare l'elenco delle voci proposte, si usa il metodo additem() Per recuperare la voce scelta o scritta, si usa getselecteditem() Quando si sceglie una voce o se ne scrive una nuova, si genera un ActionEvent Denti, Zambonelli - GRAFICA in JAVA - 63
64 ESEMPIO 19 Un'applicazione con una casella combinata e un campo di testo che riflette la selezione Ponendo seteditable(true), si può anche scrivere un valore diverso da quelli proposti: Denti, Zambonelli - GRAFICA in JAVA - 64
65 ESEMPIO 19: codice class Es19Panel extends JPanel implements ActionListener { JTextField txt; JComboBox list; public Es19Panel(){ super(); txt = new JTextField(15); txt.seteditable(false); list = new JComboBox(); list.seteditable(true); // per poter aggiungere nuove voci! list.additem("rosso"); list.additem("giallo"); list.additem("verde"); list.additem("blu"); list.addactionlistener(this); add(list); add(txt); La gestione dell'evento: public void actionperformed(actionevent e){ String scelta = (String) list.getselecteditem(); // recupera la voce selezionata o scritta // dall'utente txt.settext("scelta: " + scelta); Denti, Zambonelli - GRAFICA in JAVA - 65
66 LA GESTIONE DEL LAYOUT Quando si aggiungono componenti a un contenitore (in particolare: a un pannello), la loro posizione è decisa dal Gestore di Layout (Layour Manager) Il gestore predefinito per un pannello è FlowLayout, che dispone i componenti in fila (da sinistra a destra e dall'alto in basso) semplice, ma non sempre esteticamente efficace Esistono comunque altri gestori alternativi, più o meno complessi. LAYOUT MANAGER Oltre a FlowLayout, vi sono: BorderLayout, che dispone i componenti lungo i bordi (nord, sud, ovest, est) o al centro GridLayout, che dispone i componenti in una griglia m n GridBagLayout, che dispone i componenti in una griglia m n flessibile righe e colonne a dimensione variabile molto flessibile e potente, ma difficile da usare BoxLayout, che dispone i componenti o in orizzontale o in verticale, in un'unica casella (layout predefinito per il componente Box) nessun layout manager si specifica la posizione assoluta (x,y) del componente sconsigliato perché dipendente dalla piattaforma Per cambiare Layout Manager: setlayout(new GridLayout(4,5)) Denti, Zambonelli - GRAFICA in JAVA - 66
67 LO STESSO PANNELLO CON... FlowLayout GridLayout (griglia 2 x 1) BorderLayout (nord e sud) Senza alcun layout (posizioni a piacere) Denti, Zambonelli - GRAFICA in JAVA - 67
68 PROGETTARE UN'INTERFACCIA Spesso, per creare un'interfaccia grafica completa, efficace e gradevole non basta un singolo gestore di layout Approccio tipico: 1) suddividere l'area in zone, corrispondenti ad altrettanti pannelli 2) applicare a ogni zona il layout manager più opportuno Denti, Zambonelli - GRAFICA in JAVA - 68
Swing. Swing 1. Java e la grafica Java permette di realizzare agevolmente applicazioni grafiche Package java.awt
Swing Swing 1 Java e la grafica Java permette di realizzare agevolmente applicazioni grafiche Package java.awt il primo package grafico (Java 1.0) indipendente dalla piattaforma... o quasi! Package javax.swing
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.
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
INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE
INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).
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
Gestione degli eventi in Java
Gestione degli eventi in Java package java.awt.event.* Il modello degli eventi I componenti dell awt generano eventi in seguito alle azioni dell utente movimento del mouse click pressione di un tasto etc.
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
JAVA E LA GRAFICA SWING: ARCHITETTURA
JAVA E LA GRAFICA L architettura Java è graphics-ready Package java.awt il primo package grafico (Java 1.0) indipendente dalla piattaforma... o quasi! Package javax.swing il nuovo package grafico (Java
Interazioni col mondo: eventi
Interazioni col mondo: eventi Le interazioni di una GUI con il mondo esterno sono segnalate tramite eventi: click del mouse, inserimento di testo, selezione/attivazione... Gli eventi che memorizzano queste
JAVA E LA GRAFICA SWING: ARCHITETTURA SWING: GERARCHIA DI CLASSI SWING: GERARCHIA DI CLASSI SWING: GERARCHIA DI CLASSI SWING: GERARCHIA DI CLASSI
JAVA E LA GRAFICA L architettura Java è graphics-ready Package java.awt il primo package grafico (Java 1.0) indipendente dalla piattaforma o quasi! Package javax.swing il nuovo package grafico (Java 2;
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
Programmazione Java: Interfacce grafiche (GUI)
Programmazione Java: Interfacce grafiche (GUI) [email protected] http://www.di.univaq.it/romina.eramo/tlp ( 1 ) (GUI) Interfacce grafiche Rendere facili le cose semplici e possibili le cose difficili
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
Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu [email protected] Java Applet 1 Application VS Applet Una
Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:
Esercitazione n 6 Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java: il package javax.swing (JFrame, JPanel, JButton, ) java.util.eventobject e sue
lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000
Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,
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)
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
Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)
In questa lezione introduciamo alcuni strumenti che Java rende disponibili per la creazione di interfacce utente a manipolazione diretta, dette anche WYSISYG (what you see is what you get), con un elevato
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
Il calendario di Windows Vista
Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative
Introduzione al package grafico Swing
Introduzione al package grafico Swing Architettura di javax.swing Java supporta direttamente nella propria architettura il concetto di applicazione grafica, tramite il package javax.swing, in cui i componenti
Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa
Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa Maria Maddalena Fornari Impostazioni di pagina: orientamento È possibile modificare le
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet Prof. Franco Zambonelli Lucidi realizzati in collaborazione
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
Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.
I TEMI PREDEFINITI (TEMPLATE) Scelta del tema I temi predefiniti di wordpress sono la base di un sito che usa un utente che per ragioni pratiche o per incapacità non può creare un sito usando solo codice
Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate
MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento
Classi astratte. Master in Web Technology e Security luglio - settembre 2000. Interfacce
Master in Web Technology e Security luglio - settembre 2000 JAVA Alberto Martelli Parte III Programmazione grafica Classi astratte Vogliamo implementare un algoritmo di ordinamento di un array che sia
L interfaccia utente di Office 2010
L interfaccia utente di Office 2010 Personalizza la barra multifunzione Pagine: 3 di 4 Autore: Alessandra Salvaggio - Tratto da: Office 2010 la tua prima guida - Edizioni FAG Milano Ridurre la barra multifunzione
[Tutoriale] Realizzare un cruciverba con Excel
[Tutoriale] Realizzare un cruciverba con Excel Aperta in Excel una nuova cartella (un nuovo file), salviamo con nome in una precisa nostra cartella. Cominciamo con la Formattazione del foglio di lavoro.
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
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
Alessandro De Luca. Lezione, 13 maggio 2015
Basi Basi di di dati dati ee sistemi sistemi informativi informativi II mod.laboratorio mod.laboratorio Alessandro De Luca Università degli Studi di Napoli Federico II Lezione, Introduzione a Java Swing
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
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
Corso Eclipse. Prerequisiti. 3 Window Builder
Corso Eclipse 3 Window Builder 1 Prerequisiti Conoscenza elementare ambiente Eclipse Conoscere la nomenclatura dei componenti delle interfacce grafiche Conoscere attributi e metodi dei principali componenti
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
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
Modulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
APPLICAZIONI & APPLET
APPLICAZIONI & APPLET Java è un ottimo linguaggio per costruire applicazioni anche non per Internet anche non grafiche ma si è diffuso storicamente, e trae forza, dal concetto di applet come piccola (?)
Database 1 biblioteca universitaria. Testo del quesito
Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole
A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.
La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato
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à
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
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
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
PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1
Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6
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
Java e la grafica. Java.awt Javax.swing. L architettura Java è graphics-ready
Java e la grafica Java.awt Javax.swing JAVA E LA GRAFICA L architettura Java è graphics-ready Package java.awt il primo package grafico (Java 1.0) indipendente dalla piattaforma... o quasi! Package javax.swing
Olga Scotti. Basi di Informatica. File e cartelle
Basi di Informatica File e cartelle I file Tutte le informazioni contenute nel disco fisso (memoria permanente del computer che non si perde neanche quando togliamo la corrente) del computer sono raccolte
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
Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).
La barra multifunzione La barra multifunzione e il pulsante Microsoft Office Se avete lavorato per tanti anni con la suite da ufficio Office, questa nuova versione 2007 può disorientarvi davvero molto.
LA FINESTRA DI OPEN OFFICE CALC
LA FINESTRA DI OPEN OFFICE CALC Barra di Formattazione Barra Standard Barra del Menu Intestazione di colonna Barra di Calcolo Contenuto della cella attiva Indirizzo della cella attiva Cella attiva Intestazione
Formattazione. ü Introduzione
Formattazione ü Introduzione Abbiamo fatto un bel po' di lavoro con Mathematica, vero? Abbiamo visto come creare, valutare, semplificare, disegnare, programmare, cucinare, pescare, ed anche come sfilare
Uso della posta elettronica 7.6.1 Invio di un messaggio
Navigazione Web e comunicazione Uso della posta elettronica 7.6.1 Invio di un messaggio 7.6.1.1 Aprire, chiudere un programma/messaggio selezionare il menu Start / Tutti i programmi / Mozilla Thunderbird
Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra
4.5 Stampa 4.5.1 Stampare semplici fogli elettronici 4.5.1.1 Usare le opzioni di base della stampa Per effettuare la stampa di una cartella di lavoro si accede al comando Stampa dal menu File o si utilizza
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
Android. Implementare una interfaccia utente
Android Implementare una interfaccia utente Introduzione In questa lezione vedremo come implementare una interfaccia utente sullo schermo di Android. Vedremo gli elementi di base visualizzabili sullo schermo
3.6 Preparazione stampa
Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa Maria Maddalena Fornari Impostazioni di pagina Le impostazioni del documento utili ai
Istruzioni per la configurazione di IziOzi
Istruzioni per la configurazione di IziOzi Installazione L'applicazione si può installare da qualunque dispositivo Android a partire dalla versione 4.1 con la procedura standard tramite Google Play Store.
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
APPUNTI POWER POINT (album foto)
APPUNTI POWER POINT (album foto) Sommario Informazioni generali sulla creazione di un album di foto... 2 Aggiungere un'immagine da un file o da un disco... 2 Aggiungere una didascalia... 2 Modificare l'aspetto
Prof.ssa Paola Vicard
DISTRIBUZIONE DI FREQUENZE PER CARATTERI QUALITATIVI Questa nota consiste per la maggior parte nella traduzione (con alcune integrazioni) da Descriptive statistics di J. Shalliker e C. Ricketts, 2000,
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...
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
Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.
SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo
IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE
IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE Access permette di specificare una maschera che deve essere visualizzata automaticamente all'apertura di un file. Vediamo come creare una maschera di
L amministratore di dominio
L amministratore di dominio Netbuilder consente ai suoi clienti di gestire autonomamente le caselle del proprio dominio nel rispetto dei vincoli contrattuali. Ciò è reso possibile dall esistenza di un
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
Concetti Fondamentali
EXCEL Modulo 1 Concetti Fondamentali Excel è un applicazione che si può utilizzare per: Creare un foglio elettronico; costruire database; Disegnare grafici; Cos è un Foglio Elettronico? Un enorme foglio
8.9 CREARE UNA TABELLA PIVOT
8.9 CREARE UNA TABELLA PIVOT Utilizziamo la tabella del foglio di Excel Consumo di energia elettrica in Italia del progetto Aggiungere subtotali a una tabella di dati, per creare una Tabella pivot: essa
. 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
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
Alla scoperta della nuova interfaccia di Office 2010
Alla scoperta della nuova interfaccia di Office 2010 Una delle novità più eclatanti della versione 2007 era la nuova interfaccia con la barra multifunzione. Office 2010 mantiene questa filosofia di interfaccia
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
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
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
Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)
Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) 1 Aprire Access Appare una finestra di dialogo Microsoft Access 2 Aprire un
CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA
CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA In questo tutorial verrà illustrato come sfruttare la flessibilità del componente "Catalogo E-commerce" per realizzare un classico negozio a griglia, del tipo di
Report WordPress plugin di Konora v 0.7
` Report WordPress plugin di Konora v 0.7 Konora ltd 4321 Somewhere Street City, State ZIP phone 555-555-5555 fax 555-555-5555 [email protected] website.com Indice Indice 2 Recuperare il codice del circolo
1.0 GUIDA PER L UTENTE
1.0 GUIDA PER L UTENTE COMINCIA FACILE Una volta effettuato il login vi troverete nella pagina Amministrazione in cui potrete creare e modificare le vostre liste. Una lista è semplicemnte un contenitore
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
On-line Corsi d Informatica sul Web
On-line Corsi d Informatica sul Web Corso base di Excel Università degli Studi della Repubblica di San Marino Capitolo 1 ELEMENTI DELLO SCHERMO DI LAVORO Aprire Microsoft Excel facendo clic su Start/Avvio
ESERCITAZIONI SU Java
ESERCITAZIONI SU Java PER IL CORSO DI SISTEMI PER L ELABORAZIONE DELL INFORMAZIONE Claudia Picardi Dipartimento di Informatica - C.so Svizzera 185-10149 - Torino Tel. 0116706818 - e-mail: [email protected]
Uso delle tabelle e dei grafici Pivot
Uso delle tabelle e dei grafici Pivot 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella riassuntiva basata su condizioni multiple che hanno punti di
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
Creare un nuovo articolo sul sito Poliste.com
Creare un nuovo articolo sul sito Poliste.com Questa breve guida ti permetterà di creare dei nuovi articoli per la sezione news di Poliste.com. Il sito Poliste.com si basa sulla piattaforma open-souce
BIBLIO. Fabio Cannone Consulente Software. Settembre 2014. email : [email protected] - http://www.facebook.com/cannonefabioweb
Fabio Cannone Consulente Software Settembre 2014 email : [email protected] - http://www.facebook.com/cannonefabioweb BIBLIO è il software per la catalogazione e la gestione del prestito dei libri adottato
On-line Corsi d Informatica sul web
On-line Corsi d Informatica sul web Corso base di FrontPage Università degli Studi della Repubblica di San Marino Capitolo1 CREARE UN NUOVO SITO INTERNET Aprire Microsoft FrontPage facendo clic su Start/Avvio
Figura 1 Le Icone dei file di Excel con e senza macro.
18 Le macro Le macro rappresentano una soluzione interessante per automatizzare e velocizzare l esecuzione di operazioni ripetitive. Le macro, di fatto, sono porzioni di codice VBA (Visual Basic for Applications)
CdL in Medicina Veterinaria - STPA AA 2007-08
CdL in Medicina Veterinaria - STPA AA 2007-08 Microsoft Windows Funzionalità di un S.O. Gestione dei file Gestione dei dispositivi di ingresso/uscita Comandi per l attivazione e la gestione di programmi
Formattazione e Stampa
Formattazione e Stampa Formattazione Formattazione dei numeri Formattazione del testo Veste grafica delle celle Formattazione automatica & Stili Formattazione dei numeri Selezionare le celle, poi menu:
