//File: applet.html
/*
codebase="."
width=400 height=400>
*/
///
/*
* 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);
}
}