java中的事件监听机制

来源:互联网 发布:淘宝店铺自定义装修 编辑:程序博客网 时间:2024/05/17 09:27

java中的事件监听机制:


1:简单的按钮事件监听

说明:比如为按钮添加事件监听机制,首先得给它安上个monitor,通过addActionListener

函数,添加上,之后如果你点击了按钮,监听器就可以监听到这个事件,并且激活某种

动作,按钮的动作就是重写actionPerformed函数,也就是,如果你点击了按钮就会回掉

actionPerformed函数

代码:

<span style="font-size:18px;"><span style="font-size:24px;">import java.awt.*;import java.awt.event.*;public class TestEvent{public static void main(String args[]){MyFrame myFrame = new MyFrame();Button btn = new Button("Test");btn.setBounds(200, 200, 50, 50);btn.addActionListener(new Monitor());myFrame.add(btn);}}class MyFrame extends Frame{MyFrame(){setBounds(700, 200, 600, 600);setBackground(Color.blue);setLayout(null);setVisible(true);}}class Monitor implements ActionListener{public void actionPerformed(ActionEvent e){System.out.println("Successful");}</span><span style="font-size:24px;">}</span></span>


2:内部类在事件监听中的作用

有时候,我们的监听器的响应函数要访问事件源的成员方法或者成员对象,这时候

外部定义监听器类就不好用了,虽然可以通过getSource();函数但是还是不方便,

这时定义内部类就有必要了,首先无限制得可以访问成员函数,成员变量,

还有可以把内部类设置为private防止别人访问你的监听器类,我这个程序定义

了两个嵌套类

<span style="font-size:18px;">import java.awt.*;import java.awt.event.*;public class TestEvent{public static void main(String args[]){MyFrame myFrame = new MyFrame();}}class MyFrame extends Frame{MyFrame(){setBounds(700, 200, 800, 600);setBackground(Color.blue);setLayout(new BorderLayout());this.add(new panel(), BorderLayout.CENTER);setVisible(true);}class panel extends Panel{TextField textField[]; //创建数组引用Button btn;panel(){this.setLayout(new FlowLayout(FlowLayout.CENTER));TextField textFieldTemp[] = {new TextField(12),new TextField(12),new TextField(12),};for(TextField i : textFieldTemp){i.setFont(new Font("宋体", 1, 22));}textField = textFieldTemp;Label label = new Label("+", Label.CENTER);label.setFont(new Font("宋体", 1, 22));btn = new Button("=");btn.setFont(new Font("宋体", 1 , 22));btn.addActionListener(new Monitor());this.add(textField[0]);this.add(label);this.add(textField[1]);this.add(btn);this.add(textField[2]);}class Monitor implements ActionListener{public void actionPerformed(ActionEvent e){int a = Integer.parseInt(textField[0].getText());int b = Integer.parseInt(textField[1].getText());int c = a + b;textField[2].setText("" + c);}}}}</span>


3:Listener的适配器类, 和内部类在事件监听中应用

说明:按照常理来说,如果你要为某个事件源添加监听器接口,你要实现其所有的方法

这势必造成麻烦,所以java提供了监听器的适配器类,这个类实现了Listener接口的所有方法,

这个实现只是, function{ }; ,并没有具体的内容,所以你要添加监听的时候

只需要继承这个类,然后重写你要监听的事件的函数!这样很方便

内部类可以在new类的时候,直接建立这个类的模型,我下面的类可以很清楚看出这一点

<span style="font-size:18px;">import java.awt.*;import java.awt.event.*;import java.util.*;public class TestFaceless{public static void main(){new frame();}}class frame extends Frame{ArrayList<Point> arrayList;frame(){setBounds(700, 200, 600, 600);setBackground(Color.white);setVisible(true);this.addMouseListener(new MouseAdapter(){ //一个内部类, 又是一个Listener适配器public void mouseClicked(MouseEvent e) {                                      Frame f = (Frame) e.getSource();int x = e.getX();int y = e.getY();addPoint(new Point(x, y));f.repaint();}});}public void addPoint(Point point){arrayList.add(point);}public void paint(Graphics g) //重画函数{g.setColor(Color.black);Iterator<Point> it1 = arrayList.iterator();while(it1.hasNext()) {Point p = it1.next();int a = p.getX(); int b = p.getY();g.fillOval(a, b, 10, 10);}}}</span>


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1岁3个月害怕自己不敢走路怎么办 苹果手机没开定位丢了怎么办 我和我老婆每天都吵架怎么办 现在在学注册消防师好枯燥怎么办 店铺台阶太高顾客不愿进来怎么办? 上古卷轴5跑步要沉下去怎么办 1岁半宝宝半夜醒来不睡觉怎么办 上古卷轴5不小心偷了东西怎么办 47牙缺失17号长长了怎么办 碎纸机过热件亮了卡住纸了怎么办 汽车买贵了2万多怎么办 宝宝眼皮被蚊子咬肿了怎么办 一岁宝宝撞头咬到舌头有伤口怎么办 二胎快生了老大特别粘人怎么办 生二胎不舍得大宝跟奶奶睡怎么办 怀二胎婆婆不帮忙带孩子怎么办 注册过的高铁用户名忘了怎么办 硕士延期毕业找好的工作怎么办 竞彩足球绑定信用卡提不了现怎么办 qq启动出现问题请卸载重装怎么办 u盘有文件打开后却是空的怎么办 王者荣耀不记得所在的区服怎么办 交易猫出售游戏账号是微信号怎么办 网银密码输错3次怎么办 无线网卡信号很好就是没网速怎么办 红米2a忘了登陆账号怎么办 qq封了密保手机没用了怎么办 乐视手机重置账号密码忘了怎么办 此版本的ios不支持银联怎么办 单反m档拍出来照片是黑色怎么办 从兴趣部落老发骚扰信息怎么办 在厂里辞一个月厂长不批怎么办 在厂里做管理被员工恐吓怎么办 在葡京娱乐输了很多钱怎么办 从珠海入镜澳门北京往返签注怎么办 艾艾灸灸了一身小子子怎么办? 微信视频已过期或已清理怎么办 视频已过期或已被清理怎么办 小孩作业不会老婆天天吵骂打怎么办 苹果手机在太阳下屏幕变暗怎么办 斗鱼的鱼丸竞猜主播结算了怎么办