Mega Code Archive

 
Categories / Java / Swing JFC
 

Applet event tester

//File: applet.html /* <applet code="EventTester.class"   codebase="."   width=400 height=400> </applet> */ /// /*  * Copyright (c) 2000 David Flanagan.  All rights reserved.  * This code is from the book Java Examples in a Nutshell, 2nd Edition.  * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.  * You may study, use, and modify it for any non-commercial purpose.  * You may distribute it non-commercially as long as you retain this notice.  * For a commercial use license, or to purchase the book (recommended),  * visit http://www.davidflanagan.com/javaexamples2.  */ import java.applet.Applet; import java.awt.Event; import java.awt.Graphics; import java.util.Vector; /** An applet that gives details about Java 1.0 events */ public class EventTester extends Applet {   // Handle mouse events   public boolean mouseDown(Event e, int x, int y) {     showLine(mods(e.modifiers) + "Mouse Down: [" + x + "," + y + "]");     return true;   }   public boolean mouseUp(Event e, int x, int y) {     showLine(mods(e.modifiers) + "Mouse Up: [" + x + "," + y + "]");     return true;   }   public boolean mouseDrag(Event e, int x, int y) {     showLine(mods(e.modifiers) + "Mouse Drag: [" + x + "," + y + "]");     return true;   }   public boolean mouseMove(Event e, int x, int y) {     showLine(mods(e.modifiers) + "Mouse Move: [" + x + "," + y + "]");     return true;   }   public boolean mouseEnter(Event e, int x, int y) {     showLine("Mouse Enter: [" + x + "," + y + "]");     return true;   }   public boolean mouseExit(Event e, int x, int y) {     showLine("Mouse Exit: [" + x + "," + y + "]");     return true;   }   // Handle focus events   public boolean gotFocus(Event e, Object what) {     showLine("Got Focus");     return true;   }   public boolean lostFocus(Event e, Object what) {     showLine("Lost Focus");     return true;   }   // Handle key down and key up events   // This gets more confusing because there are two types of key events   public boolean keyDown(Event e, int key) {     int flags = e.modifiers;     if (e.id == Event.KEY_PRESS) // a regular key       showLine("Key Down: " + mods(flags) + key_name(e));     else if (e.id == Event.KEY_ACTION) // a function key       showLine("Function Key Down: " + mods(flags)           + function_key_name(key));     return true;   }   public boolean keyUp(Event e, int key) {     int flags = e.modifiers;     if (e.id == Event.KEY_RELEASE) // a regular key       showLine("Key Up: " + mods(flags) + key_name(e));     else if (e.id == Event.KEY_ACTION_RELEASE) // a function key       showLine("Function Key Up: " + mods(flags) + function_key_name(key));     return true;   }   // The remaining methods help us sort out the various modifiers and keys   // Return the current list of modifier keys   private String mods(int flags) {     String s = "[ ";     if (flags == 0)       return "";     if ((flags & Event.SHIFT_MASK) != 0)       s += "Shift ";     if ((flags & Event.CTRL_MASK) != 0)       s += "Control ";     if ((flags & Event.META_MASK) != 0)       s += "Meta ";     if ((flags & Event.ALT_MASK) != 0)       s += "Alt ";     s += "] ";     return s;   }   // Return the name of a regular (non-function) key.   private String key_name(Event e) {     char c = (char) e.key;     if (e.controlDown()) { // If CTRL flag is set, handle control chars.       if (c < ' ') {         c += '@';         return "^" + c;       }     } else { // If CTRL flag is not set, then certain ASCII       switch (c) { // control characters have special meaning.       case '\n':         return "Return";       case '\t':         return "Tab";       case '\033':         return "Escape";       case '\010':         return "Backspace";       }     }     // Handle the remaining possibilities.     if (c == '\177')       return "Delete";     else if (c == ' ')       return "Space";     else       return String.valueOf(c);   }   // Return the name of a function key. Just compare the key to the   // constants defined in the Event class.   private String function_key_name(int key) {     switch (key) {     case Event.HOME:       return "Home";     case Event.END:       return "End";     case Event.PGUP:       return "Page Up";     case Event.PGDN:       return "Page Down";     case Event.UP:       return "Up";     case Event.DOWN:       return "Down";     case Event.LEFT:       return "Left";     case Event.RIGHT:       return "Right";     case Event.F1:       return "F1";     case Event.F2:       return "F2";     case Event.F3:       return "F3";     case Event.F4:       return "F4";     case Event.F5:       return "F5";     case Event.F6:       return "F6";     case Event.F7:       return "F7";     case Event.F8:       return "F8";     case Event.F9:       return "F9";     case Event.F10:       return "F10";     case Event.F11:       return "F11";     case Event.F12:       return "F12";     }     return "Unknown Function Key";   }   /** A list of lines to display in the window */   protected Vector lines = new Vector();   /** Add a new line to the list of lines, and redisplay */   protected void showLine(String s) {     if (lines.size() == 20)       lines.removeElementAt(0);     lines.addElement(s);     repaint();   }   /** This method repaints the text in the window */   public void paint(Graphics g) {     for (int i = 0; i < lines.size(); i++)       g.drawString((String) lines.elementAt(i), 20, i * 16 + 50);   } }