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()方法,方法体为空,什么都不做。

(0)

相关推荐

  • 接口的定义与实现

    普通类:只有具体实现 抽象类:具体实现和规范(抽象)都有 接口:只有规范,自己无法实现方法体~专业的约束!约束和实现分离:面向接口编程 定义接口的关键字是interface 写接口的方法可以直接写返回 ...

  • Java学习——61.焦点事件

    焦点事件,有两种,获得焦点.失去焦点. 要实现焦点事件,需注册焦点事件监听器方法,其声明如下: public void addFocusListener(FocusListener listener) ...

  • java学习——57.按钮事件

    一个类中可以有多个按钮,每个按钮都可以注册动作事件监听,那么如何区分是单击了哪个按钮呢? Java中用getSource()方法来判断事件源. 如下列所示,有三个按钮,点击任意按钮,文本行中的文字随之 ...

  • Java学习——67、鼠标事件

    对于鼠标,可以单击,可以双击,可以按下,可以放开,本篇介绍鼠标事件. 1.接口 实现鼠标事件的接口为:MouseListener.要实现鼠标事件,必须实现此接口. 2.接口中的方法 本接口中有五个方法 ...

  • java学习——60.文本编辑组件事件

    本篇在上篇(java学习--59.文本编辑组件)的基础上介绍文本编辑组件的事件. 文本编辑组件可以响应的事件有两种: 1.CaretEvent事件 此事件是在文本行或者文本区中只要有任何修改,便会触发 ...

  • java学习——48.容器、窗口、面板和框架类

    java学习——48.容器、窗口、面板和框架类

  • java事件监听器怎么绑定,Java学习笔记(二)事件监听器

    Java实现对组件事件(如单击.输入等)的监听和JavaScript类似,都是先添加Listener,再写触发函数,不同的是,Java实现监听前必须使用implements将各个接口添加到类内. 相关 ...

  • Java学习笔记(四):理解接口 事件监听器

    一.接口 父类和子类比较,父类是一个比子类更抽象的类.这个抽象体现在两个方面:一是父类的属性和方法比子类的少:二是,子类的方法比父类的方法更加具体. 当父类非常抽象时,或者我们仅仅知道这个类的对象应该 ...

  • Java学习-注解和反射

    注解 java.Annotation Annotation的作用:可以呗其他程序读取 Annotation的格式 注解是:@注释名 在代码中存在,还可以添加一些参数 ​@SuppressWarning ...

  • Java学习-多线程

    多线程 任务(Task).进程(Process).线程(Thread) 进程的创建 1.继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用sta ...