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) | 當窗口被關(guān)閉時觸發(fā) |
void windowClosing(WindowEvent e) | 當窗口正在關(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)文章
為什么不推薦使用BeanUtils屬性轉(zhuǎn)換工具示例詳解
這篇文章主要介紹了為什么不推薦使用BeanUtils屬性轉(zhuǎn)換工具,本文通過示例代碼給大家詳細介紹,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java?Runnable和Thread實現(xiàn)多線程哪個更好你知道嗎
這篇文章主要為大家詳細介紹了Java?Runnable和Thread實現(xiàn)多線程哪個更好,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>2022-03-03詳細分析Java并發(fā)集合ArrayBlockingQueue的用法
這篇文章主要介紹了詳細分析Java并發(fā)集合ArrayBlockingQueue的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04