Java 入門圖形用戶界面設(shè)計之事件處理上
Java程序設(shè)計 圖形用戶界面 【七】事件處理上
事件處理
事件和監(jiān)聽器
事件:表示一個對象發(fā)生狀態(tài)變化
監(jiān)聽器:不斷地監(jiān)聽事件的變化,并根據(jù)這些事件進行相應(yīng)地處理
事件類 EventObject類
EventObject類的定義格式
public class EventObject extends Object implements Serializable{
public EventObject(Object source){
// 構(gòu)造一個發(fā)生事件的對象
}
public Object getSource(){
// 返回一個事件對象
}
public String toString(){
// 得到信息
}
}
Java事件處理流程

窗體事件
WindowListener是專門處理窗體事件的監(jiān)聽接口
| 方法 | 作用 |
|---|---|
| void windowActivated(WindowEvent e) | 將窗口變?yōu)榛顒哟翱跁r觸發(fā) |
| void windowDeactivated(WindowEvent e) | 將窗口變?yōu)椴换顒哟翱跁r觸發(fā) |
| void windowClosed(WindowEvent e) | 當(dāng)窗口被關(guān)閉時觸發(fā) |
| void windowClosing(WindowEvent e) | 當(dāng)窗口正在關(guān)閉時觸發(fā) |
| void windowIconified(WindowEvent e) | 窗口最小化時觸發(fā) |
| void windowDeiconified(WindowEvent e) | 窗口從最小化恢復(fù)到正常狀態(tài)時觸發(fā) |
| void windowOpened(WindowEvent e) | 窗口打開時觸發(fā) |
實現(xiàn)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("窗口被關(guān)閉");
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口關(guān)閉");
}
@Override
public void windowDeactivated(WindowEvent e) {
System.out.println("取消窗口選中");
}
@Override
public void windowDeiconified(WindowEvent e) {
System.out.println("窗口從最小化恢復(fù)");
}
@Override
public void windowIconified(WindowEvent e) {
System.out.println("窗口最小化");
}
@Override
public void windowOpened(WindowEvent e) {
System.out.println("窗口被打開");
}
}
在窗體上注冊事件監(jiān)聽器
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);
}
}

監(jiān)聽適配器
方便用戶進行事件處理的實現(xiàn)。以WindowAdapter為例,用戶只要繼承了此類,就可以根據(jù)自己的需要覆寫方法,如果現(xiàn)在只關(guān)心窗口關(guān)閉方法,則只在子類中覆寫windowClosing()方法即可
通過WindowAdapter實現(xiàn)監(jiān)聽
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("窗口關(guān)閉");
System.exit(1);
}
}
而在窗體操作的代碼中,直接使用以上的監(jiān)聽器類即可
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);
}
}

使用匿名內(nèi)部類
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);
}
}
如果現(xiàn)在使用適配器操作類,則直接編寫匿名內(nèi)部類就可以減少監(jiān)聽類的定義
到此這篇關(guān)于Java 入門圖形用戶界面設(shè)計之事件處理上的文章就介紹到這了,更多相關(guān)Java 事件處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring 自動注入AutowiredAnnotationBeanPostProcessor源碼解析
這篇文章主要介紹了spring自動注入AutowiredAnnotationBeanPostProcessor源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
啟動Springboot項目時找不到Mapper的問題及解決
這篇文章主要介紹了啟動Springboot項目時找不到Mapper的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
SpringBoot項目設(shè)置斷點debug調(diào)試無效忽略web.xml問題的解決
這篇文章主要介紹了SpringBoot項目設(shè)置斷點debug調(diào)試無效忽略web.xml問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Spring @Profile注解實現(xiàn)多環(huán)境配置
這篇文章主要介紹了Spring @Profile注解實現(xiàn)多環(huán)境配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04

