简述Java中,GUI的事件驱动模式
2015-07-02 10:46
495 查看
放弃了继续《猜猜看》的代码研究,因为我真的连自己不懂在哪里都不清楚。然后我随便上网了解了老师之前提过的问题,一是简述Java中,GUI的事件驱动模式。(我还是不了解)
图形用户界面GUI
1、基本组成:
a、提供最基本的GUI控件,如按钮、标签、文本字段等
b、将基本GUI控件组织为包容层次的容器组件,如顶层容器,中间容器等
c、负责管理容器中的组件布局的组件,如边界布局管理器、流布局管理器
d、事件传播与处理模式,如事件处理模式、各种事件监听器等
e、其他高级特征
2、一个简单的GUI程序:
import javax.swing.*;
public class Te {
public static viod main (String[] args) {
JFrame frame =new JFrame("welcome to GUI'world");
frame.getContentPane().add(
new JLabel("java'CUI Program“));
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);}}
3、事件:
定义:一个携带信息的对象。标识事件的种类以及产生事件的事件源。需要由相应的监听器接受并处理
语义:类java.util.EventObject描述了所有事件的基本语义。
事件处理代码在一个单独线程(event-dispatching thread)中执行
4、事件处理程序的实现:
a、声明事处理件类时,要么指定一个监听接口,要么继承一个实现看监听器接口的类
如:piblic class Te inplements ActionListener{……}
b、将事件处理类的实现注册到一个或多个组件作为监听器
如:someCompinent.addActionListener(instanceOfTe);
c、实现监听器接口指定的方法
如:public void actionPerformed(ActionEvent evt)
5、
方法一:实现MouseListener接口
方法二:继承MouseListener类
方法三:使用匿名内部类
6、GUI组件(component):JPanel(面板)、JFrame(画框)、JLabel(标签)、JButton(按钮)
7、Swing组件分类:
顶层容器:为其他GUI组件的绘制提供位置
中间容器:仅是为了方便定位其他GUI组件
原子组件(atomic component):为了容纳其他GUI组件
8、Applet应用框架必须继承Applet或Applet类
9、网搜总结:http://jinnianshilongnian.iteye.com/blog/1902886
a、其所有组件都继承自java.awt.Component抽象类,其内部提供了addXXXListener(XXXListener l) 注册监听器的方法,即Component与实际动作之间依赖于XXXListener抽象。
b、Java Swing中处理各组件事件的一般步骤是:
1. 新建一个组件(如JButton)。
2. 将该组件添加到相应的面板(如JPanel)。
3. 注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4. 定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
比如获取焦点事件,很多组件都可以有这个事件,是我们知道组件获取到焦点后需要一个处理,虽然每个组件如何处理是特定的(具体的),但我们可以抽象一个FocusListener,让所有具体实现它然后提供具体动作,这样组件只需依赖于FocusListener抽象,而不是具体。
还有如java.awt.Button,提供了一个addActionListener(ActionListener l),用于注册点击后触发的ActionListener实现。
组件是一个抽象类,其好处主要是复用,比如复用这些监听器的触发及管理等。
图形用户界面GUI
1、基本组成:
a、提供最基本的GUI控件,如按钮、标签、文本字段等
b、将基本GUI控件组织为包容层次的容器组件,如顶层容器,中间容器等
c、负责管理容器中的组件布局的组件,如边界布局管理器、流布局管理器
d、事件传播与处理模式,如事件处理模式、各种事件监听器等
e、其他高级特征
2、一个简单的GUI程序:
import javax.swing.*;
public class Te {
public static viod main (String[] args) {
JFrame frame =new JFrame("welcome to GUI'world");
frame.getContentPane().add(
new JLabel("java'CUI Program“));
frame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);}}
3、事件:
定义:一个携带信息的对象。标识事件的种类以及产生事件的事件源。需要由相应的监听器接受并处理
语义:类java.util.EventObject描述了所有事件的基本语义。
事件处理代码在一个单独线程(event-dispatching thread)中执行
4、事件处理程序的实现:
a、声明事处理件类时,要么指定一个监听接口,要么继承一个实现看监听器接口的类
如:piblic class Te inplements ActionListener{……}
b、将事件处理类的实现注册到一个或多个组件作为监听器
如:someCompinent.addActionListener(instanceOfTe);
c、实现监听器接口指定的方法
如:public void actionPerformed(ActionEvent evt)
5、
方法一:实现MouseListener接口
方法二:继承MouseListener类
方法三:使用匿名内部类
6、GUI组件(component):JPanel(面板)、JFrame(画框)、JLabel(标签)、JButton(按钮)
7、Swing组件分类:
顶层容器:为其他GUI组件的绘制提供位置
中间容器:仅是为了方便定位其他GUI组件
原子组件(atomic component):为了容纳其他GUI组件
8、Applet应用框架必须继承Applet或Applet类
9、网搜总结:http://jinnianshilongnian.iteye.com/blog/1902886
a、其所有组件都继承自java.awt.Component抽象类,其内部提供了addXXXListener(XXXListener l) 注册监听器的方法,即Component与实际动作之间依赖于XXXListener抽象。
b、Java Swing中处理各组件事件的一般步骤是:
1. 新建一个组件(如JButton)。
2. 将该组件添加到相应的面板(如JPanel)。
3. 注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4. 定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
比如获取焦点事件,很多组件都可以有这个事件,是我们知道组件获取到焦点后需要一个处理,虽然每个组件如何处理是特定的(具体的),但我们可以抽象一个FocusListener,让所有具体实现它然后提供具体动作,这样组件只需依赖于FocusListener抽象,而不是具体。
还有如java.awt.Button,提供了一个addActionListener(ActionListener l),用于注册点击后触发的ActionListener实现。
组件是一个抽象类,其好处主要是复用,比如复用这些监听器的触发及管理等。
相关文章推荐
- 长时间停留在calculating requirements and dependencies 的解决方案
- 代码实现 UITableView与UITableViewCell
- ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun
- 线程——委托InvokeRequired和Invoke
- Build Action 设置为 Embedded Resource
- UI7法则
- 用 requirejs 的 R.js 打包css + js
- 1041. Be Unique (20)
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools
- Windows 10 Build 10158上手操作视频首发
- iOS9 UI Tests探索笔记
- UIScrollView新手教程
- 日志一:GUI的初始和GUI编程初步
- Windows 10 Build 10158 SDK版本发布
- nyoj 1100 WAJUEJI which home strong! 【简单BFS】
- Section 12 GUI
- 【Xamarin】MonoTouch - iOS 使用 UIImagePickerController 打开图片库和相机选择图片修改头像
- Google interview question: disjoint-set questions
- JSP基础实例_request获得客户端参数_学习笔记
- [转载] java多线程学习-java.util.concurrent详解(四) BlockingQueue