Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Event Handling in der Programmiersprache Java.

Ähnliche Präsentationen


Präsentation zum Thema: "30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Event Handling in der Programmiersprache Java."—  Präsentation transkript:

1 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Event Handling in der Programmiersprache Java

2 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 2 Das Ereignismodell des JDK 1.1 Aktivitäten in der Benutzerschnittstelle lösen sogenannte Ereignisse aus Gruppe von Ereignissen wird durch Objekte einer bestimmten Klasse repräsentiert Ereignisverarbeitung wird in Form eines Delegationsmodells durchgeführt Ereignisempfänger müssen sich bei der Ereignisquelle (z.B. Button) registrieren lassen beim Auslösen von Ereignissen werden für die Empfängerobjekte bestimmte Methoden aufgerufen

3 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 3 Klassenhierarchie der Ereignis-Klassen AdjustmentEvent ComponentEvent ItemEvent ContainerEvent FocusEvent InputEvent TextEvent PaintEvent WindowEvent KeyEventMouseEvent EventObject AWTEvent ActionEvent

4 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 4 Methoden der Klasse AWTEvent getSource() - liefert einen Verweis auf die Ereignisquelle getID() - liefert die ID des Ereignisses ActionEvent ACTION_PERFORMEDButton,List KeyEventKEY_PRESSED, KEY_RELEASEDComponent KEY_TYPED MouseEventMOUSE_ENTERED, MOUSE_EXITEDComponent MOUSE_PRESSED, MOUSE_RELEASED MOUSE_MOVED, MOUSE_DRAGGED ItemEventSELECTED, DESELECTEDList, Choice ITEM_STATE_CHANGED AdjustmentEvent TRACK, UNIT_INCREMENT, Scrollbar UNIT_DECREMENT, BLOCK_INCREMENT, isConsumed() - true, falls das Ereignis schon verarbeitet ist consume() - verarbeitet das Ereignis

5 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 5 Delegationsmodell Ereignis wird durch drei Elemente repräsentiert die Komponente, in der sich das Ereignis zugetragen hat die Art des Ereignisses die Komponenten, die über das Ereignis informiert werden wollen Zusammenspiel dieser Elemente Ereignisquelle EventListener implements XXXListener Verweis auf EventListener Registrierung(1) durch addXXXListener()-Methode Benachrichtigung(2)

6 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 6 Registrierung Implementierung einer EventListener-Schnittstelle class MyListener implements ItemListener{ void itemStateChanged(ItemEvent e){... } } die Klasse wird instanziert die Klasse wird bei der Ereignisquelle registriert List list = new List(); list.addItemListener(new MyListener());

7 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 7 Beispiel import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class ActionApplet extends Applet implements ActionListener { private Button b; public void init() { b = new Button("Java"); b.addActionListener(this); add(b); } public void actionPerformed(ActionEvent e) { System.out.println("Action in Button Java"); }

8 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 8 Beispiel public class MouseListenerDemo extends Applet implements MouseListener { public void init() { setBackground(Color.blue); addMouseListener(this); } public void mouseClicked(MouseEvent e) { getAppletContext().showStatus( "click at x:"+e.getX()+" y:"+e.getY()); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }

9 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 9 Event-Adapter-Klassen public class MouseDemo extends Applet { public void init() { setBackground(Color.blue); addMouseListener(new MyMouseAdapter(this)); } public void showPoint(int x, int y) { getAppletContext().showStatus("click at x:" +x+" y:"+y); } class MyAdapter extends MouseAdapter { protected MouseDemo demo; public MyAdapter(MouseDemo demo) { this.demo = demo; } public void mouseClicked(MouseEvent e) { demo.showPoint(e.getX(), e.getY()); } }

10 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 10 Die Klasse ActionEvent ein Action-Event wird ausgelöst, wenn in einer Komponente eine Aktion geschieht Button wird gedrückt Eingabe in einem Textfeld wird durch Return-Taste abgeschlossen Auswahl eines Elements aus einer Liste, Choice oder Menü Bearbeitung über Implementierung des Interface ActionListener public void actionPerformed(ActionEvent) Methoden der Klasse ActionEvent String getActionCommand() - liefert das Kommando zu dieser Aktion int getModifier() - liefert Modifier-Tasten (Shift, Control, Meta) die während der Aktion gedrückt wurden

11 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 11 Beispiel public class ActionEventDemo extends Applet implements ActionListener { public void init () { Button open = new Button("open"); Button close = new Button("close"); add(open); add(close); open.addActionListener(this); close.addActionListener(this); open.setActionCommand("open"); close.setActionCommand("close"); } public void actionPerformed(ActionEvent e) { if ("open".equals(e.getActionCommand())) getAppletContext().showStatus("action in open"); if ("close".equals(e.getActionCommand())) getAppletContext().showStatus("action in close"); }

12 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 12 Die Klasse MouseEvent Mouse-Events werden ausgelöst, sobald der Benutzer die Maustaste betätigt oder die Maus bewegt Bearbeitung über Implementierung der Interfaces MouseListener MouseMotionListener Methoden der Klasse MouseEvent int getX() - x-Position des Ereignisses int getY() - y-Position des Ereignisses int getClickCount() - Anzahl aufeinanderfolgender Mausklicks int getModifiers() - Abfrage welche Maustaste gedrückt wurde InputEvent.BUTTON1_MASK => Links InputEvent.BUTTON2_MASK => Mitte InputEvent.BUTTON3_MASK => Rechts

13 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 13 MouseListener und MouseMotionListener MouseListener public void mousePressed(MouseEvent); public void mouseReleased(MouseEvent); public void mouseClicked(MouseEvent); public void mouseEntered(MouseEvent); public void mouseExited(MouseEvent); MouseMotionListener public void mouseMoved(MouseEvent); public void MouseDragged(MouseEvent);

14 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 14 Beispiel public class MouseEventDemo extends Applet { Rectangle rect; public void init() { rect = new Rectangle(90, 20, 70, 50); addMouseMotionListener(new DemoMouseMotionAdapter(this)); } public void paint(Graphics g) { g.setColor(Color.blue); g.fillRect(rect.x, rect.y, rect.width, rect.height); } public void isInside(int x, int y) { if (rect.contains(x,y)) getAppletContext().showStatus("Mouse is in"); else getAppletContext().showStatus("Mouse is out"); }

15 30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 15 Beispiel class DemoMouseMotionAdapter extends MouseMotionAdapter { protected MouseEventDemo demo; public DemoMouseMotionAdapter(MouseEventDemo demo) { this.demo = demo; } public void mouseMoved(MouseEvent e) { demo.isInside(e.getX(), e.getY()); }


Herunterladen ppt "30.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Event Handling in der Programmiersprache Java."

Ähnliche Präsentationen


Google-Anzeigen