AWT-Ereignisse |
import java.awt.event.*; public class MausEvent extends Applet implements MouseListener { int x, y; public void init() { this.addMouseListener(this); } // die Mitglieder der MouseListener-Schnittstelle public void mouseClicked(MouseEvent me) { x = me.getX(); y = me.getY(); } public void mouseReleased(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } } |
In der init-Funktion wird der MouseListener auf diese Klasse
"scharfgemacht" (this.add ...) und die Behandlung auf die
eigene Klasse gelenkt (..Listener(this)). Die eigene Klasse
wird zwar von Applet abgeleitet, implementiert aber die
Schnittstelle (interface) des MouseListener. Das bedeutet,
daß jede Funktion implementiert werden muß, selbst
wenn sie nicht im Programm benötigt wird.
In keyPressed werden auch Sondertasten gefangen.
Mit getKeyCode kann der Tastencode bestimmt werden.
Tastaturereignisse
Wenn ein Programm auf Tastaturereignisse reagieren will,
implementiert es das Interface KeyListener. Dazu müssen
die Methoden keyPressed, keyTyped und keyReleased implementiert
werden. Ausserdem muss einmal addKeyListener aufgerufen
werden, damit die Ereignisse ankommen.
public class dummy extends Applet implements KeyListener { public void init() { addKeyListener(this); } // ------------ Hier wird der KeyListener implementiert --------- // KeyPressed reagiert auch auf Sondertasten public void keyPressed(KeyEvent e) { int k = e.getKeyCode(); if (k==KeyEvent.VK_UP) { // Cursortaste oben } if (k==KeyEvent.VK_DOWN) { // Cursortaste unten } if (k==KeyEvent.VK_LEFT) ... if (k==KeyEvent.VK_RIGHT) ... } // keyPressed public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) {} // ------------ Ende der Implementierung des KeyListeners |
import java.awt.*; public class MiniMenu extends Object { public static void main(String[] args) { Frame myFrame = new Frame("Erstes Frame"); MenuBar myMenuBar = new MenuBar(); myFrame.setMenuBar(myMenuBar); Menu fileMenu = new Menu("Datei"); myMenuBar.add(fileMenu); MenuItem EndeItem = new MenuItem("Ende"); HndlMenu MenuHandler = new HndlMenu(EndeItem); EndeItem.addActionListener(MenuHandler); fileMenu.add(EndeItem); myFrame.resize(300, 200); myFrame.show(); } } |
MiniMenu erweitert Object, nicht Applet! Der Start liegt damit nicht in der Funktion init, sondern main. Es wird ein Frame angelegt, der einen Menübaum zugeordnet bekommt. Im Gegensatz zu Windows oder MacOS verwendet AWT das direkte Aufbauen von Menüs wie man es von den Widget-Sets von X-Window kennt.
Bevor das EndeItem dem Baum hinzugefügt wird, wird der Eventhandler, hier HndlMenu angebunden. Durch resize und vor allem show erscheint das Programm mit dem Menübaum auf dem Bildschirm.
Der Eventhandler unter der Datei HndlMenu.java:
import java.awt.*; import java.awt.event.*; public class HndlMenu implements ActionListener { MenuItem thisItem; HndlMenu(MenuItem callItem) { thisItem = callItem; } // hier wird auf das Ereignis reagiert public void actionPerformed(ActionEvent evnt) { if (thisItem.getLabel()=="Ende") { System.exit(0); } } } |
Über den Konstruktor wird das Element notiert, das den Eventhandler benutzt. Bei Eintreffen des Events wird die Funktion actionPerformed gerufen. Hier wird dann durch Aufruf von System.exit die Anwendung geschlossen.
Homepage - Java | (C) Copyright 2011 Arnold Willemer |