首頁 > 軟體

Java 入門圖形化使用者介面設計之事件處理上

2022-02-16 19:00:51

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) 當視窗正在關閉時觸發
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);
    }
}

如果現在使用介面卡操作類,則直接編寫匿名內部類就可以減少監聽類的定義

到此這篇關於Java 入門圖形化使用者介面設計之事件處理上的文章就介紹到這了,更多相關Java 事件處理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com