请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要相关的知识,希望对你有一定的参考价值。
在编程语言中的事件就是当某组件的状态发生改变的时候通知其它对象发生了这件事,我们在这里只讨论图形界面的组件,有可能是按钮、文本框、菜单、多选等等。对于通知其它对象的方法一般有两种模式:
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("你好");
参考技术A JButton j = new JButton();
j.addXXXXListener(new XXXListener()
/*里面有XXXListener的各种事件方法的实现,不想全部实现可以newXXXAdapter()*/
);
201671010105 2016-2017-2《Java程序设计》第十二周学习心得
这一周我们主要学习了图形程序设计,lAWT库处理用户界面元素的方法:把图形元素的创建和行为委托给本地GUI工具箱进行处理。这有很多缺点。由于用户使用的平台各不相同,观感会有很大的差异。而swing恰好弥补了这个缺点,Swing用户界面库是非基于对等体的GUI工具箱。Swing具有更丰富并且更方便的用户界面元素集合。Swing对底层平台的依赖很少,因此与平台相关的bug很少。Swing会带来交叉平台上的统一视觉体验。Swing类库被放在javax.swing包里。在Java中把由component类的子类或间接子类创建的对象称为一个组件。而容器是指Java中能容纳和排列组件的组件,所以,容器是特殊的组件,最常见的容器是框架。大部分AWT组件都有其Swing的等价组件,绝大多数Swing组件都以“J”开头。Container类提供了一个方法add(),用来在容器类组件对象中添加其他组件。容器本身也是一个组件,可以把一个容器添加到另一个容器里,实现容器嵌套。这周的内容学习比较扎实,总的来说不错。
以上是关于请简要说明Java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要的主要内容,如果未能解决你的问题,请参考以下文章
201671010105 2016-2017-2《Java程序设计》第十二周学习心得