Java学习——66、窗口事件
窗口也是有事件的,可以打开窗口,关闭窗口,最小化窗口等等,Java中也有专门的接口来处理相关的事件。
1、WindowListener接口
Java中由WindowListener窗口事件监听器接口来处理跟窗口相关的事件。
此接口中有七个方法,如下:
public interface WindouListener{
public abstract void windowOpened(WindowEvent ev){;//打开窗口后执行的事件处理方法
public abstract void windowClosing(WindowEvent ev);//关闭窗口时执行
public abstract void windowDeactivated(WindowEvent ev);//窗口变为不活动时执行
public abstract void windowActivated(WindowEvent ev);//激活窗口时执行
public abstract void windowClosed(WindowEvent ev);//关闭窗口后执行
public abstract void windowIconified(WindowEvent ev);//窗口最小化时执行
public abstract void windowDeiconified(WindowEvent ev);//窗口最小化再恢复时执行
}
2、注册事件监听器的方法
窗口事件注册事件监听器的方法是:
public void addWindowListener(WindowListener listener)
3、简单例题
本例题主要用于说明窗口事件的注册与实现。
本例中有两个类,WindowsEventLearn为主类,用于注册事件监听器接口,实现窗口事件的方法。
nextFrame类主要是在主类中实现窗口事件方法时调用此窗口用于方法的具体实现。
具体代码如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class WindowsEventLearn extends JFrame implements WindowListener{
private nextFrame next;
public WindowsEventLearn(){
super("窗口事件处理示例");
this.addWindowListener(this);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setSize(300,300);
next=new nextFrame("");
}
public static void main(String args[]){
new WindowsEventLearn();
}
public void windowOpened(WindowEvent ev){
this.getContentPane().add(new JLabel("窗口打开,新加标签"));
}//打开窗口时,给窗口中添加标签,标签中的文字为“窗口打开,新加标签”
public void windowClosing(WindowEvent ev){
next=new nextFrame("前一个窗口关闭,新窗口打开");
next.setVisible(true);
} //关闭时,调用类nextFrame打开一个新的窗口,类nextFrame中有一个带参的构造方法
public void windowClosed(WindowEvent ev) {
System.exit(0);
} //关闭后,系统结束
public void windowIconified(WindowEvent ev){
next.dispose();
next=new nextFrame("窗口缩小了,点击下面放大");
next.setVisible(true);
}//最小化时,打开窗口,调用nextFrame中的构造方法
public void windowDeiconified(WindowEvent ev){
this.getContentPane().add(new JLabel("窗口还原啦"),"North");
}//恢复时,加入标签,在最顶端显示文字”窗口还原啦”
public void windowActivated(WindowEvent ev) {
this.getContentPane().add(new JLabel("大家好"),"South");
}//激活时,加入标签“大家好”,因为打开窗口时,窗口即被激活,故打开窗口时,此标签便已加入在内
public void windowDeactivated(WindowEvent ev) {
}//窗口不活动时,什么都不做
}
class nextFrame extends JFrame{
public nextFrame(String args){
super(args);
this.setVisible(false);
this.setLocationRelativeTo(null);
this.setSize(200,200);
this.getContentPane().add(new Label(args));
}
}
其运行结果如下:
刚打开窗口时,触发打开窗口windowOpened事件和窗口激活事件windowActivated,调用这两个方法给窗口添加两个标签,如图所示:
点击最小化按钮,本窗口将最小化,触发windowIconified最小化窗口事件,调用类,打开一个新的nextForm类的窗口:
点击还原后,触发windowDeiconified事件,在窗口顶端添加一个标签,文字为“窗口还原啦”。
点击关闭按钮,将触发windowClosing和windowClosed事件,打开一个新窗口并关闭程序。
在实际的应用中,这七个方法都要实现,但可以什么都不做,比如本例中的windowDeactivated()方法,方法体为空,什么都不做。