按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
// should be to install listeners。 The code is
// much safer; more modular and maintainable。
import java。awt。*;
import java。awt。event。*;
class Display {
public static final int
EVENT = 0; PONENT = 1;
MOUSE = 2; MOUSE_MOVE = 3;
FOCUS = 4; KEY = 5; ACTION = 6;
LAST = 7;
public String'' evnt;
438
…………………………………………………………Page 440……………………………………………………………
Display() {
evnt = new String'LAST';
for(int i = 0; i 《 LAST; i++)
evnt'i' = new String();
}
public void show(Graphics g) {
for(int i = 0; i 《 LAST; i++)
g。drawString(evnt'i'; 0; 10 * i + 10);
}
}
class EnabledPanel extends Panel {
Color c;
int id;
Display display = new Display();
public EnabledPanel(int i; Color mc) {
id = i;
c = mc;
setLayout(new BorderLayout());
add(new MyButton(); BorderLayout。SOUTH);
addponentListener(new CL());
addFocusListener(new FL());
addKeyListener(new KL());
addMouseListener(new ML());
addMouseMotionListener(new MML());
}
// To eliminate flicker:
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
g。setColor(c);
Dimension s = getSize();
g。fillRect(0; 0; s。width; s。height);
g。setColor(Color。black);
display。show(g);
}
// Don't need to enable anything for this:
public void processEvent(AWTEvent e) {
display。evnt'Display。EVENT'= e。toString();
repaint();
super。processEvent(e);
}
class CL implements ponentListener {
public void ponentMoved(ponentEvent e){
display。evnt'Display。PONENT' =
〃ponent moved〃;
repaint();
}
public void
ponentResized(ponentEvent e) {
display。evnt'Display。PONENT' =
439
…………………………………………………………Page 441……………………………………………………………
〃ponent resized〃;
repaint();
}
public void
ponentHidden(ponentEvent e) {
display。evnt'Display。PONENT' =
〃ponent hidden〃;
repaint();
}
public void ponentShown(ponentEvent e){
display。evnt'Display。PONENT' =
〃ponent shown〃;
repaint();
}
}
class FL implements FocusListener {
public void focusGained(FocusEvent e) {
display。evnt'Display。FOCUS' =
〃FOCUS gained〃;
repaint();
}
public void focusLost(FocusEvent e) {
display。evnt'Display。FOCUS' =
〃FOCUS lost〃;
repaint();
}
}
class KL implements KeyListener {
public void keyPressed(KeyEvent e) {
display。evnt'Display。KEY' =
〃KEY pressed: 〃;
showCode(e);
}
public void keyReleased (KeyEvent e) {
display。evnt'Display。KEY' =
〃KEY released: 〃;
showCode(e);
}
public void keyTyped(KeyEvent e) {
display。evnt'Display。KEY' =
〃KEY typed: 〃;
showCode(e);
}
void showCode(KeyEvent e) {
int code = e。getKeyCode();
display。evnt'Display。KEY' +=
KeyEvent。getKeyText(code);
repaint();
}
}
class ML implements MouseListener {
public void mouseClicked(MouseEvent e) {
440
…………………………………………………………Page 442……………………………………………………………
requestFocus(); // Get FOCUS on click
display。evnt'Display。MOUSE' =
〃MOUSE clicked〃;
showMouse(e);
}
public void mousePressed(MouseEvent e) {
display。evnt'Display。MOUSE' =
〃MOUSE pressed〃;
showMouse(e);
}
public void mouseReleased(MouseEvent e) {
display。evnt'Display。MOUSE' =
〃MOUSE released〃;
showMouse(e);
}
public void mouseEntered(MouseEvent e) {
display。evnt'Display。MOUSE' =
〃MOUSE entered〃;
showMouse(e);
}
public void mouseExited(MouseEvent e) {
display。evnt'Display。MOUSE' =
〃MOUSE exited〃;
showMouse(e);
}
void showMouse(MouseEvent e) {
display。evnt'Display。MOUSE' +=
〃; x = 〃 + e。getX() +
〃; y = 〃 + e。getY();
repaint();
}
}
class MML implements MouseMotionListener {
public void mouseDragged(MouseEvent e) {
display。evnt'Display。MOUSE_MOVE' =
〃MOUSE dragged〃;
showMouse(e);
}
public void mouseMoved(MouseEvent e) {
display。evnt'Display。MOUSE_MOVE' =
〃MOUSE moved〃;
showMouse(e);
}
void showMouse(MouseEvent e) {
display。evnt'Display。MOUSE_MOVE' +=
〃; x = 〃 + e。getX() +
〃; y = 〃 + e。getY();
repaint();
}
}
}
441
…………………………………………………………Page 443……………………………………………………………
class MyButton extends Button {
int clickCounter;
String label = 〃〃;
public MyButton() {
addActionListener(new AL());
}
public void paint(Graphics g) {
g。setColor(Color。green);
Dimension s = getSize();
g。fillRect(0; 0; s。width; s。height);
g。setColor(Color。black);
g。drawRect(0; 0; s。width 1; s。height 1);
drawLabel(g);
}
private void drawLabel(Graphics g) {
FontMetrics fm = g。getFontMetrics();
i