1. 이벤트 수신 메커니즘
-- 이벤트 소스: awt 또는 Swing 패키지의 그래픽 인터페이스 구성 요소, 즉 이벤트가 발생하는 구성 요소
-- 이벤트: 이벤트 구성 요소에 대한 사용자의 작업
-- 리스너 이벤트 처리를 담당하는 리스너 메소드
2. java.awt.event 패키지 아래 클래스
WindowEvent //사용자가 반쯤 닫힌 창을 클릭하거나 창이 획득되거나 획득되는 등의 창 이벤트 포커스 상실, 최대화 또는 최소화 등
MouseEvent //마우스 이벤트, 마우스 누르기, 마우스 떼기, 클릭(눌렀다 떼기) 등
ActionEvent //Action 이벤트, 특정 동작을 나타내지는 않지만, 버튼과 같은 의미, 메뉴를 클릭할 때, 텍스트 상자에서 Enter를 누를 때 등은 다음과 같이 이해할 수 있습니다. 사용자의 특정 작업으로 인해 특정 구성 요소 자체의 기본 기능이 발생합니다. 이는 ActionEvent 이벤트입니다. 다양한 이벤트 유형은 다양한 이벤트 리스너 인터페이스에 해당하며 인터페이스 이름은 이벤트 이름에 해당합니다.
WindowEvent - >WindowListener
MouseEvent ->MouseListener
ActionEvent ->ActionListener
코드 예:
import java.awt.Frame;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;public class Test20 {public static void main(String[] args) { Frame f = new Frame(); f.setSize(400, 400); f.setVisible(true); f.addWindowListener(new WindowListener() { @Overridepublic void windowOpened(WindowEvent e) { // 窗口被打开// TODO Auto-generated method stub} @Overridepublic void windowClosing(WindowEvent e) { // 设置关闭事件// TODO Auto-generated method stubSystem.exit(0); } @Overridepublic void windowClosed(WindowEvent e) { // 用户已经关闭窗口// TODO Auto-generated method stub} @Overridepublic void windowIconified(WindowEvent e) { // 被最小化的时候// TODO Auto-generated method stub} @Overridepublic void windowDeiconified(WindowEvent e) { // 最小化被还原的时候// TODO Auto-generated method stub} @Overridepublic void windowActivated(WindowEvent e) { // 窗体被激活// TODO Auto-generated method stub} @Overridepublic void windowDeactivated(WindowEvent e) { // 失去焦点的时候// TODO Auto-generated method stub} }); } }
JDK는 이벤트 어댑터 클래스라고 부르는 대부분의 이벤트 리스너 인터페이스 클래스에 해당하는 구현 클래스를 정의합니다(리스너 객체 생성을 용이하게 하기 위해 빈 구현 메서드가 많이 있습니다). 여기서는 WindowAdapter를 사용했습니다.
import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Test21 {public static void main(String[] args) { Frame f = new Frame("事件适配器的栗子"); f.setSize(400, 400); f.setVisible(true); f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
WindowAdapter 클래스의 소스코드를 관찰하고 감을 느껴보실 수 있습니다.
public abstract class WindowAdapterimplements WindowListener, WindowStateListener, WindowFocusListener {/** * Invoked when a window has been opened. */public void windowOpened(WindowEvent e) {}/** * Invoked when a window is in the process of being closed. * The close operation can be overridden at this point. */public void windowClosing(WindowEvent e) {}/** * Invoked when a window has been closed. */public void windowClosed(WindowEvent e) {}/** * Invoked when a window is iconified. */public void windowIconified(WindowEvent e) {}/** * Invoked when a window is de-iconified. */public void windowDeiconified(WindowEvent e) {}/** * Invoked when a window is activated. */public void windowActivated(WindowEvent e) {}/** * Invoked when a window is de-activated. */public void windowDeactivated(WindowEvent e) {}/** * Invoked when a window state is changed. * @since 1.4 */public void windowStateChanged(WindowEvent e) {}/** * Invoked when the Window is set to be the focused Window, which means * that the Window, or one of its subcomponents, will receive keyboard * events. * * @since 1.4 */public void windowGainedFocus(WindowEvent e) {}/** * Invoked when the Window is no longer the focused Window, which means * that keyboard events will no longer be delivered to the Window or any of * its subcomponents. * * @since 1.4 */public void windowLostFocus(WindowEvent e) {} }
예시 1:
import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//例一:在窗体中放置一个按纽,点击后让程序退出class TestFrame implements ActionListener { // ActionListener接口里面只有一个方法,下面会重写private Frame f;public TestFrame() { f = new Frame("窗口"); init(); }private void init() { f.setSize(300, 300); f.setLayout(new FlowLayout());// 布局模式Button b = new Button("退出程序"); b.addActionListener(this); f.add(b); f.setVisible(true); } @Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubf.setVisible(false); f.dispose();// 在关闭的时候,可以用它来销毁窗体资源System.exit(0);// 退出 } }public class Test22 {public static void main(String[] args) {new TestFrame(); } }
위에서 프로그램 종료 버튼을 클릭하면 오른쪽 상단의 X를 클릭하지만 종료할 수 없습니다. WindowListener가 설정되지 않았기 때문입니다. this 예제는 ActionListener 인터페이스를 사용하고 다음과 같이 소스 코드를 살펴볼 수 있습니다.
지정된 디렉터리의 목록 내용:public interface ActionListener extends EventListener {/** * Invoked when an action occurs. */public void actionPerformed(ActionEvent e); }
위 내용은 Java의 GUI 프로그래밍 설명(2부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!