多平台统一管理软件接口,如何实现多平台统一管理软件接口
300
2022-08-28
Java 入门图形用户界面设计之事件处理上
java程序设计 图形用户界面 【七】事件处理上
事件处理
事件和监听器
事件:表示一个对象发生状态变化
监听器:不断地监听事件的变化,并根据这些事件进行相应地处理
事件类 EventObject类
EventObject类的定义格式
public class EventObject extends Object implements Serializable{
public EventObject(Object source){
// 构造一个发生事件的对象
}
public Object getSource(){
// 返回一个事件对象
}
public String toString(){
// 得到信息
}
}
Java事件处理流程
窗体事件
WindowListener是专门处理窗体事件的监听接口
方法
作用
void windowActivated(WindowEvent e)
将窗口变为活动窗口时触发
void windowDeactivated(WindowEvent e)
将窗口变为不活动窗口时触发
void windowClosed(WindowEvent e)
当窗口被关闭时触发
void windowClosing(WindowEvent e)
当窗口正在关闭时触发
JYehqCYhkM
void windowIconified(WindowEvent e)
窗口最小化时触发
void windowDeiconified(WindowEvent e)
窗口从最小化恢复到正常状态时触发
void windowOpened(WindowEvent e)
窗口打开时触发
实现WindowListener
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class WindowEventHandle implements WindowListener {
@Override
public void windowActivated(WindowEvent e) {
System.out.println("窗口被选中");
}
@Override
public void windowClosed(WindowEvent e) {
System.out.println("窗口被关闭");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口关闭");
}
@Override
public void windowDeactivated(WindowEvent e) {
System.out.println("取消窗口选中");
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("窗口从最小化恢复");
}
@Override
public void windowIconified(WindowEvent e) {
System.out.println("窗口最小化");
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("窗口被打开");
}
}
在窗体上注册事件监听器
import javax.swing.*;
import java.awt.*;
public class Hello {
public static void main(String[] args) {
JFrame frame = new JFrame("一");
frame.addWindowListener(new WindowEventHandle());
frame.setSize(500,300);
frame.setBackground(Color.BLUE);
frame.setLocation(500,500);
frame.setVisible(true);
}
}
监听适配器
方便用户进行事件处理的实现。以WindowAdapter为例,用户只要继承了此类,就可以根据自己的需要覆写方法,如果现在只关心窗口关闭方法,则只在子类中覆写windowClosing()方法即可
通过WindowAdapter实现监听
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class WindowEventHandle extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.out.println("窗口关闭");
System.exit(1);
}
}
而在窗体操作的代码中,直接使用以上的监听器类即可
import javax.swing.*;
import java.awt.*;
public class Hello {
public static void main(String[] args) {
JFrame frame = new JFrame("一");
frame.addWindowListener(new WindowEventHandle());
frame.setSize(500,300);
frame.setBackground(Color.BLUE);
frame.setLocation(500,500);
frame.setVisible(true);
}
}
使用匿名内部类
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowEvent;
public class Hello {
public static void main(String[] args) {
JFrame frame = new JFrame("一");
frame.addWindowListener(new WindowEventHandle(){
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
System.exit(1);
}
});
frame.setSize(500,300);
frame.setBackground(Color.BLUE);
frame.setLocation(500,500);
frame.setVisible(true);
}
}
如果现在使用适配器操作类,则直接编写匿名内部类就可以减少监听类的定义
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~