0
点赞
收藏
分享

微信扫一扫

java GUI 事件模型

package event;



import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.event.WindowListener;



import javax.swing.JButton;

import javax.swing.JFrame;



class A implements ActionListener{


@Override

public void actionPerformed(ActionEvent e) {//单击鼠标触发的事件

System.out.println("我今天很爽!");

//
System.exit(-1); //终止整个程序

}

}


/*class B implements WindowListener{

//本来是这么写 但此接口的抽象方法太多 直接implements需要实现所有方法 显然不合适

//于是类WindowAdapter先实现该接口并重写(只有方法体)所有抽象方法

//再继承类WindowAdapter 此时是重写而不是实现 随便重写哪几个都可以 方便多了

//也即传说中的 适配器模型 Adapter

}
*/

class B extends WindowAdapter{

@Override

public void windowClosing(WindowEvent e) {

//
super.windowClosing(e); //直接用此方法也只是隐藏窗口 未完全关闭程序 控制台红框还是亮的

System.exit(-1);

}




@Override

public void windowOpened(WindowEvent e) {//窗口第一次出现时调用 加一个addWindowListener 然后重写多个方法即可

//一个方法即对应一个事件 妙妙妙

System.out.println("主窗口弹出!");

}

}



public class EventStartDemo {



public static void main(String[] args) {

JFrame frame = new JFrame();

JButton bn = new JButton("确定");

frame.add(bn);

frame.pack();

A aa = new A();

bn.addActionListener(aa);//aa是监听器 他一旦发现单击事件发生了 就立即自动调用类内的事件处理方法

//不同的事件源对应的方法不一样 即不同操作(单击 双击 鼠标 获得焦点 )对应不同方法的重写



frame.setVisible(true);

//
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.addWindowListener(new B());//也可达到关闭窗口功能

//
不写也自动关闭。。 但发现控制台红框还是亮的 说明程序未结束 隐藏了窗口罢了

}



}


运行结果:
主窗口弹出!
我今天很爽!//点一次确定后
我今天很爽!//点一次确定后

举报

相关推荐

0 条评论