La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 71 Uso dellinterfaccia Runnable interface Runnable { public void run ( ); } Linterfaccia.

Presentazioni simili


Presentazione sul tema: "Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 71 Uso dellinterfaccia Runnable interface Runnable { public void run ( ); } Linterfaccia."— Transcript della presentazione:

1 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 71 Uso dellinterfaccia Runnable interface Runnable { public void run ( ); } Linterfaccia Runnable astrae il concetto di qualcosa che esegue codice mentre è attivo La classe Thread implementa Runnable Implementare Runnable è un altro modo di creare oggetti eseguibili, alternativo allestendere Thread – ( una classe può avere una sola superclasse ) Se robj è un oggetto Runnable, è possibile invocare il costruttore Thread(robj) che crea una nuova trama che usa il metodo run( ) di robj

2 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 72 class RunPingPong implements Runnable { String word; int delay; PingPong (String che_dire, int intervallo) { word = che_dire; delay = intervallo; } public void run ( ) { try { for ( ; ; ) { System.out.print (word + ); Thread.sleep (delay); } } catch (InterruptedException e) { return; } public static void main (String[ ] args) { Runnable ping = new RunPingPong (ping, 33); Runnable pong = new RunPingPong (PONG, 100); new Thread(ping).start(); new Thread(pong).start(); }

3 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 73 Campi volatile Un campo il cui valore può essere modificato concorrentemente da diverse trame va dichiarato volatile per segnalare al compilatore che trame non sincronizzate possono cambiarne il contenuto... volatile int currentValue; currentValue = 5; for ( ; ; ) { display.showValue(currentValue); Thread.sleep(1000); }...

4 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 74 Librerie di classi in JAVA: Packages Un package è una collezione di classi in qualche modo correlate Crescita della taglia delle applicazioni MODULARITA I packages aiutano a organizzare le classi in modo da raggruppare quelle affini Rendere tipi e componenti accessibili solamente ad un gruppo di classi Protezione rispetto a possibili collisioni di identificatori

5 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 75 Come creare un package package attr; class X { // campi e metodi } public class Y { // campi e metodi } interface Z { // metodi } File sorgente: MieiSorgenti.java Dichiarazione di package: tutto il codice scritto in MieiSorgenti.java fa parte del package attr Le classi utilizzabili al di fuori del proprio package sono dichiarate public

6 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 76 Importare un package package altro; import attr.Y; import libreria.*; class A { // campi e metodi } public class B { // campi e metodi } File sorgente: CodiceAltrui.java Importa la classe Y del package attr Importa tutto il package libreria

7 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 77 Nomi dei package: proprietà e convenzioni Il nome di un package è aggiunto implicitamente come prefisso a tutti i nomi dei tipi ivi definiti ESEMPIO Se in codice al di fuori del package attr voglio dichiarare una variabile del tipo Y, definito in attr, ho due alternative: 1) Scrivo la dichiarazione attr.Y varY; 2) Importo la classe attr.Y con import attr.Y; e poi scrivo la dichiarazione Y varY; E utile scegliere in modo standard i nomi di packages. Ad esempio, si può usare sempre come prefisso linverso del proprio dominio internet: it.unisa.attr Se un file sorgente non ha dichiarazione di package, il suo codice fa parte del package di default unnamed

8 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 78 Criteri per la creazione di packages Un package dovrebbe contenere solo classi correlate funzionalmente: tutti i membri non privati di ogni classe sono accessibili da tutte le altre classi Un package dovrebbe contenere gruppi di classi secondo una logica utile per chi volesse utilizzarle Mantenere insiemi coerenti di classi organizzate in packages aiuta a scegliere gli identificatori in modo che siano semplici e intuitivi senza correre il rischio dei conflitti

9 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 79 Packages forniti dal sistema JAVA java.lang language foundation classes: implementano i tipi di dati fondamentali java.io I/O class library: contiene le classi che gestiscono linput/output a basso livello, per esempio la lettura da file java.awt abstract window toolkit: contiene le classi che gestiscono la interazione con lutente attraverso finestre, bottoni, menù, etc. java.util utility class library: contiene classi di utilità per gestire strutture dati quali hash tables,vettori, stack java.net network interface class library: contiene classi per comunicare su rete java.awt.event event class library: contiene classi per la gestione degli eventi java.sql database connectivity class library: contiene classi usate per accedere ai dati contenuti in DB relazionali ed elaborarli usando il linguaggio SQL

10 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 710 Interfaccia utente a finestre: i contenitori Ogni componente GUI viene costruito allinterno di un contenitore Container è la classe (astratta) di base per i contenitori Window finestre di 1° livello senza cornice, titolo, menù Panel finestre annidabili Frame sottoclasse di Window di finestre con titolo, bordi, barra di menù, angoli di ridimensionamento Dialog finestre di dialogo

11 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 711 Impostazione della dimensione della finestra Il metodo resize( ) Al momento della sua creazione, ad una finestra vengono assegnate dimensioni di default. Con il metodo resize( ) è possibile impostare le dimensioni volute void resize (int nuovaLunghezza, int nuovaAltezza) void resize (Dimension nuoveDimensioni) un oggetto di tipo Dimension ha due campi width e height

12 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 712 Gli elementi dellinterfaccia utente: i controlli Programmare una interfaccia utente grafica coinvolge diversi aspetti: I controlli utilizzati ed il modo in cui essi sono realizzati Il modo in cui i controlli vengono organizzati sullo schermo Il modo in cui risponde il programma agli eventi quali ad esempio premere un tasto sulla tastiera, cliccare col mouse su un pulsante, o trascinare un oggetto grafico col mouse

13 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 713 I bottoni I bottoni vengono utilizzati per segnalare al programma una azione da compiere Per inserire un bottone nellinterfaccia, basta creare una istanza della classe Button ed aggiungere tale oggetto in una finestra Frame finestra = new Frame(Graphical User Interface); Button exit = new Button( ); Button ok = new Button(OK); exit.setLabel(EXIT); finestra.add(exit); finestra.add(ok); I dettagli della realizzazione dellaspetto grafico dei controlli sono gestiti in maniera trasparente al programmatore dalle classi di java.awt

14 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 714 Le etichette Le etichette sono in essenza nientaltro che stringhe di testo da inserire in un qualche contenitore Una etichetta è un oggetto di tipo Label che ha associato un testo Label etichetta = new Label (ATTENZIONE!); Label hello = new Label( ); String messaggio; hello.setText(Salve, gente); messaggio = etichetta.getText( );

15 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 715 Le caselle Per comunicare al programma un cambiamento dello stato del sistema è possibile usare un Checkbox Una casella Checkbox è un oggetto con uno stato che può essere on oppure off, ed ha laspetto grafico di un quadratino con associata una stringa Per cambiare lo stato di un checkbox, basta cliccare col mouse nella casella Checkbox utenteEsperto = new Checkbox(ESPERTO); Checkbox utenteNovizio = new Checkbox(NON ESPERTO); Boolean stato; stato = utenteEsperto.getState( );

16 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 716 Radio Buttons Un Radio Button è un caso speciale di Checkbox: i Radio Buttons possono essere raggruppati assieme in modo che uno solo di essi sia nello stato on Se uno dei Radio Buttons di un gruppo è off e viene cliccato, quello che era on viene automaticamente posto a off Per raggruppare i Radio Buttons si usa la classe CheckboxGroup CheckboxGroup lingua = new CheckboxGroup( ); Checkbox inglese = new Checkbox(English, lingua, true); Checkbox italiano = new Checkbox(Italiano, lingua, false);

17 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 717 Menù Per creare un menù a tendina si utilizza la classe Choice Le varie possibili opzioni del menù sono specificate come stringhe aggiunte alloggetto di tipo Choice paramString( ) ritorna la stringa correntemente selezionata Choice modifica = new Choice(Modifica ); String selezione; modifica.addItem(Copia); modifica.addItem(Taglia); modifica.addItem(Incolla);..... modifica.select(Copia); selezione = modifica.paramString( );

18 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 718 Liste Una lista permette di selezionare una stringa da un elenco fornito di frecce di scrolling E anche possibile selezionare una sequenza di stringhe Il costruttore no-arg di List crea una lista di cui non viene mostrato nessun elemento. Più usato è il costruttore con 2 argomenti List nomi = new List(4, true ); String[ ] nomiSelezionati; nomi.addItem(Aldo); nomi.addItem(Carla); nomi.addItem(Ettore); nomi.addItem(Giovanni); nomi.addItem(Maria); nomi.addItem(Luisa); nomiSelezionati = nomi.getSelectedItems( );

19 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 719 Campi di testo Un campo di testo permette allutente di scrivere una stringa La classe TextField contiene una varietà di costruttori e metodi per creare campi di testo, scriverci dentro, selezionare il testo scritto TextField testoA = new TextField( ); TextField testoB = new TextField(24); TextField testoC = new TextField(Scrivere quì); TextField testoD = new TextField(Scrivere anche quì, 24); String scritto = testoC.getText( ); String scrittoSelezionato = testoD.getSelectedText( );

20 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 720 Aree di testo Una area di testo è un componente del tutto simile a TextField, con la caratteristica di poter contenere un testo formato da più linee, con barra di scorrimento verticale E possibile specificare allatto della creazione di un componente di tipo TextArea il numero di caratteri per ciascuna riga e il numero di righe visualizzate TextArea lineeDiTesto = new TextArea(testo su più linee, 8, 24);

21 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 721 Barre di scorrimento Una barra di scorrimento è un controllo che permette di muovere una casella di scorrimento allinterno di una guida per mezzo di due frecce direzionali E possibile specificarne lorientamento orizzontale/verticale, e il suo stato è caratterizzato da un valore che riflette la posizione della casella di scorrimento Scrollbar barra = new Scrollbar(Scrollbar.VERTICAL, 20, 5, 0, 80); Crea una barra di scorrimento verticale, con posizione iniziale 20, incremento pari a 5, valore minimo 0, valore massimo 80

22 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 722 Inserire componenti: i Layout Managers Un Layout Manager è un oggetto che si occupa di disporre automaticamente i componenti inseriti in un contenitore secondo un ben preciso criterio java.awt definisce diversi Layout Managers standard, fra cui: FlowLayout Dispone i componenti per righe BorderLayout Inserisce componenti in sezioni N, E, S, W, Center CardLayout Dispone i componenti in una pila, con un bottone per voltare i componenti come fossero un mazzo di carte GridLayout Dispone i componenti su una griglia

23 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 723 Inserire componenti: un esempio import java.awt.*; public class FrameDemo { public static void main (String args[ ]) { Button bottoni[ ] = new Button[6]; Frame demo = new Frame(Questa è una demo); demo.setLayout(new BorderLayout( )); for (int i = 1; i < 6; i++) { bottoni[i] = new Button(BOTTONE + i); } demo.add(BorderLayout.NORTH, bottoni[1]); demo.add(BorderLayout.SOUTH, bottoni[2]); demo.add(BorderLayout.EAST, bottoni[3]); demo.add(BorderLayout.WEST, bottoni[4]); demo.add(BorderLayout.CENTER, bottoni[5]); demo.show( ); }

24 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 724 Gestione della grafica: la classe Graphics Un oggetto di tipo Graphics rappresenta essenzialmente una porzione di schermo in cui è possibile mostrare testi, immagini, forme in modo indipendente dalla piattaforma Per disegnare un oggetto di tipo Graphics si utilizza il metodo paint( ) della classe Component, cui si deve passare il contesto grafico di tipo Graphics Per ottenere il contesto grafico di una finestra si usa il metodo get Graphics( ) import java.awt.Frame; import java.awt.Graphics; public class SimpleGrafica extends Frame { public void paint (Graphics g) { g.drawRect(10, 10, 100, 75); }

25 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 725 Disegnare linee Per disegnare linee in un oggetto di tipo Graphics si utilizza il metodo drawLine(int inizioX, int inizioY, int fineX, int fineY) La linea viene disegnata nel colore attivo dal punto (inizioX, inizioY) al punto (fineX, fineY) import java.awt.*; public class Linee extends Frame { public void paint (Graphics g) { g.drawLine(10, 10, 100, 75); g.drawLine(10, 10, 40, 75); g.drawLine(40, 10, 40, 75); }

26 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 726 Disegnare rettangoli Per disegnare rettangoli in un oggetto di tipo Graphics si usano metodo quali drawRect(int alto, int sin, int larg, int altez) drawRoundRect(int alto, int sin, int larg, int altez, int diamX, int diamY) fillRect(int alto, int sinistra, int larghezza, int altezza) fillRoundRect(int alto, int sin, int larg, int altez, int diamX, int diamY) import java.awt.*; public class Rettangoli extends Frame { public void paint (Graphics g) { g.drawRect(10, 10, 100, 75); g.fillRoundRect(20, 20, 40, 35, 15, 15); g.drawRoundRect(40, 30, 40, 15, 10, 10); }

27 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 727 Disegnare ellissi e cerchi Per disegnare ellissi e cerchi in un oggetto di tipo Graphics si usano metodo quali drawOval(int alto, int sin, int larg, int altez) fillOval(int alto, int sinistra, int larghezza, int altezza) import java.awt.*; public class Ellissi extends Frame { public void paint (Graphics g) { g.drawOval(10, 10, 100, 75); g.fillOval(20, 20, 40, 35); g.fillOval(40, 30, 40, 40); }

28 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 728 Disegnare archi Per disegnare archi in un oggetto di tipo Graphics si usano metodo quali drawArc(int alto, int sin, int larg, int altez, int angInizio, int angCurv) fillArc(int alto, int sin, int larg, int altez, int angInizio, int angCurv) import java.awt.*; public class Archi extends Frame { public void paint (Graphics g) { g.drawArc(10, 10, 50, 25, 0, 90); g.fillArc(20, 20, 40, 40, 90, -120); }

29 Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 729 Disegnare poligoni Per disegnare poligoni in un oggetto di tipo Graphics si usano metodo quali drawPolygon(int x[ ], int y[ ], int numPunti) fillPolygon(int x[ ], int y[ ], int numPunti ) import java.awt.*; public class Clessidra extends Frame { public void paint (Graphics g) { int num = 5; int puntiX[ ] = {30, 200, 30, 200, 30}; int puntiY[ ] = {30, 30, 200, 200, 30}; g.drawPolygon(puntiX, puntiY, num); }


Scaricare ppt "Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 71 Uso dellinterfaccia Runnable interface Runnable { public void run ( ); } Linterfaccia."

Presentazioni simili


Annunci Google