一、简单的监听事件
ActionListener监听一个类:
这个类(或者其他想要进行监听并执行相应操作的类)实现ActionListener接口,然后实现他的一个void actionPerformed(ActionEvent e)方法
在这个类中,如果需要哪一个对象能够在上面实现的事件方法中执行监听到的动作,需要注册监听 jb1.AddActionListener(this),jb1是一个java的按钮对象,是事件源,this指代当前类的实例对象(也可以是其他实现了ActionListener接口和实现了未实现方法的其他类),是监听对象
然后,指定action命令,jb1.setActionCommand("clickjb1"),“clickjb1”是自己命名的一个事件标识,用来识别是哪里触发的事件
之后,在之前实现的那个actionPerformed(ActionEvent e)方法中使用 e.getActionCommand().equals("clickjb1")来确定触发的事件并执行相应的操作
二、键盘监听事件
事件源的类实现KeyListener类,并实现它的三个方法:
void keyPressed(KeyEvent e)//键被按下
keyReleased(KeyEvent e)//键被释放
keyTyped(KeyEvent e)//键的一个值被输出
方法中可以使用 e.getKeyCode() == KeyEvent.VK_DOWN 来获取并比较按下的键是哪个,并据此执行一些事件
然后使用监听对象的类使用this.addKeyListener(moveOvalPanel);,this是监听对象的实例对象,moveOvalPanel是事件源的实例对象。
/**
* 可以移动的一个小球
* @author liangqibin
*
*/
public class MoveOval extends JFrame{
MoveOvalPanel moveOvalPanel =null;
public static void main(String[] args) {
MoveOval moveOval = new MoveOval();
}
public MoveOval(){
moveOvalPanel = new MoveOvalPanel();
this.add(moveOvalPanel);
this.addKeyListener(moveOvalPanel);
this.setTitle("可以用上下左右键移动的小球");//设置标题
this.setSize(400, 200);//设置窗口大小
this.setLocation(300, 200);//设置相对于window界面的位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口保证JVM也退出,避免无谓的内存消耗
this.setVisible(true);//显示
}
}
class MoveOvalPanel extends JPanel implements KeyListener{
int x=10,y=10;
public void paint(Graphics g){
super.paint(g);
g.fillOval(x, y, 10, 10);
}
@Override
public void keyPressed(KeyEvent e) {
//键被按下
if(e.getKeyCode() == KeyEvent.VK_DOWN){//下
y+=5;
}else if(e.getKeyCode() == KeyEvent.VK_UP){//上
y-=5;
}else if(e.getKeyCode() == KeyEvent.VK_RIGHT){//右
x+=5;
}else if(e.getKeyCode() == KeyEvent.VK_LEFT){//左
x-=5;
}
//调用repaint()函数来重绘界面
this.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
//键被释放
}
@Override
public void keyTyped(KeyEvent e) {
//键的一个值被输出
}
}