问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要_百度...

发布网友 发布时间:2024-04-02 01:00

我来回答

2个回答

热心网友 时间:2024-04-28 21:29

在编程语言中的事件就是当某组件的状态发生改变的时候通知其它对象发生了这件事,我们在这里只讨论图形界面的组件,有可能是按钮、文本框、菜单、多选等等。
对于通知其它对象的方法一般有两种模式:
1)推模式:状态改变的对象通知其它对象;
2)拉模式:其他对象不停的查看该对象状态是否发生改变。
例如我去小卖部买烟,要一包红塔山,结果小卖部没货了,如果我把我得电话给小卖部老板,烟如果到了请给我打电话,这就是推模式。如果我每隔5分钟来小卖部看一看烟是否到了,这就是拉模式。
Java采用的是推模式,所有监听事件都基于观察者设计模式,所以我们也可以自己给予观察者开发出专用的监听器。

我们JavaGUI程序开发,会经常使用到监听事件,比如一个小计算器的程序,当我们点击“计算”按钮后,希望程序将两个文本框中的数字相加,那么就必需给这个按钮添加事件:
1)按钮的动作触发事件接口是ActionListener接口(不同组件要实现不同功能需要有不同的接口),我们需要写一个事件类,实现ActionListener接口,接口中需要我们实现的方法actionPerformed(ActionEvent e)代表了当按钮事件被触发后需要程序做些什么,比如在这里用System.out.println("你好")在控制台打印你好,这一步就相当于我把电话写在纸上。
2)调用JButton组件实例的addActionListener(ActionListener al)方法(其它事件也有相应的方法)将上面写的事件类注册到这个按钮上,这就相当于我把写着电话的纸条交给小卖部的老板。
上述两部工作完成后,这个按钮的事件就添加完成了,程序运行,点击按钮,动作事件被触发,控制台显示“你好”。

实例:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

/**
* 一个简单的按钮事件教学实例
* @author 米强
*
*/
public class Test extends JFrame {

public Test() {
super("简单的按钮事件实例");
// 一个按钮的实例化对象
JButton button = new JButton("按钮");
// 构造一个事件类,该类实现了ActionListener动作接口
MyActionListener action = new MyActionListener();
// 为这个按钮添加动作事件(匿名类等写法在这里不做讨论)
button.addActionListener(action);
// 将按钮添加到窗体中
getContentPane().add(button);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);
}

public static void main(String[] args) {
new Test();
}

}

/**
* 事件类,实现ActionListener接口
* @author 米强
*
*/
class MyActionListener implements ActionListener {

/**
* 动作事件出发后所执行的方法
*/
public void actionPerformed(ActionEvent e) {
// 在控制台打印“你好”
System.out.println("你好");
}

}

热心网友 时间:2024-04-28 21:32

JButton j = new JButton();
j.addXXXXListener(new XXXListener(){
/*里面有XXXListener的各种事件方法的实现,不想全部实现可以newXXXAdapter()*/
});
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
弱弱的问一句R9 270X显卡怎么样~ 能带得起我的AMD 240CPU么?_百度知 ... i54570cpu华硕z87a主板要配多少的内存条和显卡 i5 3570k配R9 270X显卡,用什么主板和电源? 很容易上火是什么原因 口干舌燥五心烦热失眠多梦夜不能寐请问是什么原因,吃什么能有效... 想问看大家对老妻少夫的问题有何看法? ...战记第十三章第6关打法 山海战记13-6攻略-手游攻略-游戏鸟手游网 ...战记第十七章第1关打法 山海战记17-1攻略-手游攻略-游戏鸟手游网 ...山海战记9-6图文攻略-手游攻略-游戏鸟手游网 ...战记第十二章第2关打法 山海战记12-2攻略-手游攻略-游戏鸟手游网 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 10月初一出生的人好不好 翻译成白话文:舍利子,复有菩萨摩诃萨住六波罗蜜多,净睹史多天宫,当知... 小鸭子和雪人的故事 ...和猫王的女儿莉莎·普雷斯利离婚?听说迈克尔·杰克逊和猫王的... 从福建泉州出发去上海 杭州 乌镇 苏州 南京最后回广州 景点路线应该... 从泉州到浙江湖州在到上海南京自驾车怎么玩 泉州回上海上海海洋水族馆路过什么地方 英文情侣网名一对200组 现在西安铁路局工务段工资待遇怎么样?我是西安铁路职业技术学院学生... 关于数组定义语句“数据类型符 数组名[长度];”,下列说法中正确的是... 筋膜提升疼吗 西亚虎的介绍 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 如何创建revit项目 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 送东阳马生序中的第二段主要讲了什么事? 2001年10月2日出生。是什么星座? 农历2001.10.21日是什么星座 1.冲击波音响是哪里产的? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 科学小制作喷泉的原理科学小制作喷泉 癿是什么字 癿,是什么字? 京东备件库怎么进 京东备件库如何进入 京东备件库进入方法 血象高咳嗽引起发烧医生说用可乐雪梨姜片顿水喝可以么 灵隐寺风景区游玩时间 灵隐寺游览需要多长时间 豪杰春香里那首更爱你谁有音译过的歌词?! 打卡额济纳旗弱水金沙岛的游玩指南是什么? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 他怎么了5年级450字 2010级高中毕业证可以在网上查到吗 广联达里Y-DZQ是用什么定义? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 饶州监狱和鄱阳县公安局哪个级别高 用什么app还信用卡有现金红包???例如我知道理财通每月首次还信用卡返... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信...