Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.

Lignende præsentationer


Præsentationer af emnet: "12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector."— Præsentationens transcript:

1 12 – GUI med Swing

2 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector

3 3 NOEA2009Java-kursus – GUI med Swing Demo En simpel applikation der viser brug af komponenter og event handlere

4 4 NOEA2009Java-kursus – GUI med Swing Event-driven applications Ideen er meget simpel: –“user actions” bliver til “events” –events overføres en for en til applikationen, som processererer eventen vha. en eventhandler –Sådan programmeres de fleste GUI’er… GUI App

5 5 NOEA2009Java-kursus – GUI med Swing Event Model? Events bruges til håndtere interaktion med GUI komponenter, dvs. hvordan skal programmet f.eks håndtere tryk på en knap Tre vigtige elementer Event Source Event Listener/Handler Event Object

6 6 NOEA2009Java-kursus – GUI med Swing Event Source, Event Listener/Handler Event Source > Den GUI komponent der genererer hændelsen > Eksempel: button Event Listener/Handler > Modtager og håndterer events > Indeholder forretnings logik   Ommer!! Kalder logik i forretningslaget! > Eksempel: Vis information til brugeren. Slå op i database. Beregn noget

7 7 NOEA2009Java-kursus – GUI med Swing Event Object Oprettes når event’et sker. Indeholder nødvendig information om hændelsen Event type som er opstået Kilde til event, f.eks minKnap Repræsenteret af en Event klasse

8 8 NOEA2009Java-kursus – GUI med Swing Event Listener registreres ved Event Source En listener registreres ved en kilde og venter derefter til et event opstår Når et event opstår > Event objekt oprettes af event source > Event objekt fyres af til de registrerede listeners (metode på event listener kaldes med et event objekt som parameter) Når listeneren modtager et event objekt fra kilden > Undersøg og behandl den event som er opstået.

9 9 NOEA2009Java-kursus – GUI med Swing Control Flow of Delegation Event Model

10 10 NOEA2009Java-kursus – GUI med Swing Observer pattern Also called Observable in some litterature Might also be a interface

11 11 NOEA2009Java-kursus – GUI med Swing Metoder på GUI komponenter til registrering Registrere en listener: void add Listener( Listener listenerObj) hvor > afhænger af komponenten >f.eks Key, Mouse, Focus, Component, Action mv. > En komponent kan have flere listeners registreret Afregistere en listener: void remove Listener( Listener listenerObj)

12 12 NOEA2009Java-kursus – GUI med Swing Event Classes Event Classes

13 13 NOEA2009Java-kursus – GUI med Swing Event klasser Arver fra EventObject klassen > java.util package AWTEvent klassen > Subklasse til EventObject > Defineret i java.awt package > Rod for alle AWT-baserede events > Subklasser følger denne navne konvention: Event

14 14 NOEA2009Java-kursus – GUI med Swing Event klasser

15 15 NOEA2009Java-kursus – GUI med Swing Event Listeners Klasser som implementerer Listener interfaces Typiske Listener interfaces:

16 16 NOEA2009Java-kursus – GUI med Swing ActionListener Metode ActionListener er et interface, som indeholder een metode

17 17 NOEA2009Java-kursus – GUI med Swing MouseListener Metoder

18 18 NOEA2009Java-kursus – GUI med Swing MouseMotionListener Metoder

19 19 NOEA2009Java-kursus – GUI med Swing WindowListener Metoder

20 20 NOEA2009Java-kursus – GUI med Swing Trin til oprette GUI applikation med event handling 1.Oprette GUI klasse > Hvordan skal applikationen se ud. 2.Oprette Event Listener klasse (en klasse som implementere det passende listener interface) > Override alle metoder i interfacet > Dvs. implementer de metoder der betyder noget og måske tomme implementeringer for dem, der ikke betyder noget 3.Register listener objektet komponenten > Objektet er en instans af listener klassen i step 2 > Brug add Listener metoden på komponenten

21 21 NOEA2009Java-kursus – GUI med Swing Mouse Events Eksempel (page #1) import java.awt.*; import java.awt.event.*; public class MouseEventsDemo extends Frame implements MouseListener, MouseMotionListener { TextField tf; public MouseEventsDemo(String title){ super(title); tf = new TextField(60); // Register event listener to the event source addMouseListener(this); } //continued...

22 22 NOEA2009Java-kursus – GUI med Swing Mouse Events Eksempel (page #2) // Displays GUI public void launchFrame() { /* Add components to the frame */ add(tf, BorderLayout.SOUTH); setSize(300,300); setVisible(true); } // Implement methods of event listener interface public void mouseClicked(MouseEvent me) { String msg = "Mouse clicked."; tf.setText(msg); } //continued...

23 23 NOEA2009Java-kursus – GUI med Swing Mouse Events Eksempel (page #3) public void mouseEntered(MouseEvent me) { String msg = "Mouse entered component."; tf.setText(msg); } public void mouseExited(MouseEvent me) { String msg = "Mouse exited component."; tf.setText(msg); } public void mousePressed(MouseEvent me) { String msg = "Mouse pressed."; tf.setText(msg); } //continued...

24 24 NOEA2009Java-kursus – GUI med Swing Mouse Events Eksempel (page #4) public void mouseReleased(MouseEvent me) { String msg = "Mouse released."; tf.setText(msg); } public void mouseDragged(MouseEvent me) { String msg = "Mouse dragged at " + me.getX() + "," + me.getY(); tf.setText(msg); } //continued...

25 25 NOEA2009Java-kursus – GUI med Swing Mouse Events Eksempel (page #5) public void mouseMoved(MouseEvent me) { String msg = "Mouse moved at " + me.getX() + "," + me.getY(); tf.setText(msg); } // Main method public static void main(String args[]) { MouseEventsDemo med = new MouseEventsDemo("Mouse Events Demo"); med.launchFrame(); }

26 26 NOEA2009Java-kursus – GUI med Swing Close Window Eksempel (page #1) import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame implements WindowListener { Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addWindowListener(this); } //continued...

27 27 NOEA2009Java-kursus – GUI med Swing Close Window Eksempel (page #2) void launchFrame() { setSize(300,300); setVisible(true); } // Implement methods of listener interface public void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowClosing(WindowEvent e) { setVisible(false); System.exit(0); } //continued...

28 28 NOEA2009Java-kursus – GUI med Swing Close Window Eksempel (page #3) public void windowDeactivated(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { } // Main method public static void main(String args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchFrame(); }

29 29 NOEA2009Java-kursus – GUI med Swing Adapter klasser Hvorfor adapter klasser? > Ellers implementere en masse tomme metoder i et interface > Det er kun nogle af metoderne i event listener interfacet, der interessante i situationen Adapter klasser > Indbygget i Java > Implementer alle metoder i event listener interfaces med mere end en metode > Implementerer tomme metoder

30 30 NOEA2009Java-kursus – GUI med Swing Adapter klasser: Close Window Eksempel import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame{ Label label; CFListener w = new CFListener(this); CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addWindowListener(w); } // Irrelevant kode udeladt //continued...

31 31 NOEA2009Java-kursus – GUI med Swing Adapter klasser: Close Window Eksempel class CFListener extends WindowAdapter { CloseFrame ref; CFListener( CloseFrame ref ){ this.ref = ref; } public void windowClosing(WindowEvent e) { ref.dispose(); System.exit(1); }

32 32 NOEA2009Java-kursus – GUI med Swing Inner Classes Klasse der er erklæret indeni en anden klasse Hvorfor inner classes? > Gør programmer simplere > Specielt ved event handling > Forudsætter høj kobling

33 33 NOEA2009Java-kursus – GUI med Swing Inner Classes: Close Window Eksempel import java.awt.*; import java.awt.event.*; class CloseFrame extends Frame{ Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addWindowListener(new CFListener()); } //continued...

34 34 NOEA2009Java-kursus – GUI med Swing Inner Classes: Close Window Eksempel void launchFrame() { setSize(300,300); setVisible(true); } class CFListener extends WindowAdapter { public void windowClosing(WindowEvent e) { dispose(); System.exit(1); } //continued...

35 35 NOEA2009Java-kursus – GUI med Swing Inner Classes: Close Window Eksempel public static void main(String args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchFrame(); }

36 36 NOEA2009Java-kursus – GUI med Swing Anonyme Inner Classes Inner classes uden navn Hvorfor anonyme inner classes? > Simplifisere koden yderligere > Specielt i event handling

37 37 NOEA2009Java-kursus – GUI med Swing Anonyme Inner Classes: Close Window Eksempel import java.awt.*;import java.awt.event.*; class CloseFrame extends Frame{ Label label; CloseFrame(String title) { super(title); label = new Label("Close the frame."); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ dispose(); System.exit(1); } }); } Dette er den normale måde at gøre på i Java GUI programmering


Download ppt "12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector."

Lignende præsentationer


Annoncer fra Google