java 事件处理

java事件处理是采取“委托事件模型”,所谓“委托事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此信息传递给“事件的监听者“处理的一种方式,而这里所说的信息实际上就是java.awt.event事件类库里某个类所创建的对象,称为事件对象


事件:鼠标点击  键盘   鼠标悬浮等等

产生事件的对象---》事件源对象,例如按钮

事件的信息----》事件对象

事件的监听者---》事件监听对象,可以是JFrame,也可以是一个JPanel,也可以是一个普通的类,这个类有方法去处理事件


package com.zjz.event;


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Demo9_3 extends JFrame implements ActionListener{
JPanel mp = null;
JButton jb1 = null;
JButton jb2 = null;


public static void main(String[] args) {
// TODO Auto-generated method stub
Demo9_3 demo9_3 = new Demo9_3();
}

public Demo9_3() {
mp = new JPanel();
mp.setBackground(Color.black);
jb1 = new JButton("黑色");
jb2 = new JButton("红色");

this.add(jb1,BorderLayout.NORTH);
this.add(mp);
this.add(jb2,BorderLayout.SOUTH);

Cat myCat = new Cat();

//注册监听
jb1.addActionListener(this);//参数是监听类的实例对象
jb1.addActionListener(myCat);
//指定action命令
jb1.setActionCommand("aa");

jb2.addActionListener(this);
jb2.addActionListener(myCat);
jb2.setActionCommand("bb");

this.setSize(300,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


//处理事件的方法
@Override
public void actionPerformed(ActionEvent e) {
// 判断是哪个按钮被点击
if (e.getActionCommand().equals("aa")) {
mp.setBackground(Color.black);
} else if (e.getActionCommand().equals("bb")) {
mp.setBackground(Color.red);
}
}
}


class MyPanel extends JPanel {
public void paint(Graphics g) {
super.paint(g);
}
}


class Cat implements ActionListener {


@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getActionCommand().equals("aa")) {
System.out.println("您点击黑色按钮");
} else if(arg0.getActionCommand().equals("bb")) {
System.out.println("您点击红色按钮");
}
}
}

再一个案例:

/**
 * 功能:通过键盘控制小球的动向
 */
package com.zjz.event;


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Demo9_4 extends JFrame {
MyPanel2 mp = null;


public static void main(String[] args) {
Demo9_4 demo9_4 = new Demo9_4();
}

public Demo9_4() {
mp = new MyPanel2();

this.add(mp);   
this.addKeyListener(mp);
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}


}


class MyPanel2 extends JPanel implements KeyListener{
int x = 10;
int y = 10;

@Override
public void paint(Graphics g) {
super.paint(g);//一个重要的初始化步骤,如果没有它,在下面调用reapint()函数时它就会保留之前画过的痕迹
g.fillOval(x, y, 10, 10);
}


//键被按下
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
// System.out.println("键被按下"+(char)e.getKeyCode());
if (e.getKeyCode() == KeyEvent.VK_UP) {
y -= 3;
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y += 3;
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x -= 3;
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x += 3;
}

this.repaint();
}


//释放
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}


//键的一个值被输出
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值