韩顺平老师的零基础学java总结
一、事件处理入门,让小球动起来
public class BallMove extends JFrame {
MyPanel mp = null;
public BallMove() {
mp = new MyPanel();
this.add(mp);
this.setSize(400, 300);
//JPanel设置监听器后还需让JFrame知道
this.addKeyListener(mp);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new BallMove();
}
}
class MyPanel extends JPanel implements KeyListener {
int x = 10;
int y = 10;
@Override
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 20, 20);//默认黑色
}
//有字符输出时,该方法被触发
@Override
public void keyTyped(KeyEvent e) {
}
//某个键按下时触发
@Override
public void keyPressed(KeyEvent e) {
// System.out.println((char)e.getKeyCode()+"被按下...");
//当按下的键为向下按钮时:
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y=y+3;
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
y--;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x--;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x++;
}
//让面板重绘。
this.repaint();
}
//某个键松开时触发
@Override
public void keyReleased(KeyEvent e) {
}
}
因为小球是在JPanel上画出来的,所以让MyPanel类继承KeyListener.并且实现里面的三个方法。
三个方法分别是:
keyTyped:有字符输出时触发。
keyPressed:键按下时触发。
keyReleased:键松开时触发。
在JPanel添加监听器后,还需让JFrame窗口知道。
二、java事件处理机制
1.基本说明
java事件处理采取“委派事件模型”,当事件发生时,产生事件的对象(事件源)会把此“信息”传递给事件监听者处理。
这里的信息:java.awt.event事件类库的某个类创建的对象,把它称为“事件的对象”。
事件源:即产生事件的东西,如(鼠标,键盘,按钮等。)
事件源产生一个事件后,就会把相关的信息封装成一个对象,就是一个事件对象。
然后将这个事件传递给监听者,交给监听者去处理。
2.机制分析
让一个对象成为事件监听者,需要去实现相应的监听器才行。
3.事件处理机制的深入理解
事件源、事件、事件监听器。
(1)事件源:一个产生事件的对象。如按钮,鼠标,键盘。
(2)事件:承载事件源事件改变时的对象,如鼠标按下左键,键盘按下某个按钮,松开等。
键盘事件、鼠标事件、窗口事件等。
事件对象保存着当前事件的很多信息,如keyEvent对象含有被按下键的code值。
java.awt.event和javax.swing.event包中定义了各种事件类型。
(3)事件类型:
(4)事件监听器接口
1.一个类实现了事件监听器的接口,就可以作为一个事件监听者,对接受到的事件进行处理。
2.事件监听器接口有多种,不同的监听器接口可以监听不同的事件。且一个类可以同时实现多个监听接口。