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

窗體事件
WindowListener是專(zhuān)門(mén)處理窗體事件的監(jiān)聽(tīng)接口
| 方法 | 作用 |
|---|---|
| void windowActivated(WindowEvent e) | 將窗口變?yōu)榛顒?dòng)窗口時(shí)觸發(fā) |
| void windowDeactivated(WindowEvent e) | 將窗口變?yōu)椴换顒?dòng)窗口時(shí)觸發(fā) |
| void windowClosed(WindowEvent e) | 當(dāng)窗口被關(guān)閉時(shí)觸發(fā) |
| void windowClosing(WindowEvent e) | 當(dāng)窗口正在關(guān)閉時(shí)觸發(fā) |
| void windowIconified(WindowEvent e) | 窗口最小化時(shí)觸發(fā) |
| void windowDeiconified(WindowEvent e) | 窗口從最小化恢復(fù)到正常狀態(tài)時(shí)觸發(fā) |
| void windowOpened(WindowEvent e) | 窗口打開(kāi)時(shí)觸發(fā) |
實(shí)現(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("窗口被打開(kāi)");
}
}
在窗體上注冊(cè)事件監(jiān)聽(tīng)器
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)聽(tīng)適配器
方便用戶(hù)進(jìn)行事件處理的實(shí)現(xiàn)。以WindowAdapter為例,用戶(hù)只要繼承了此類(lèi),就可以根據(jù)自己的需要覆寫(xiě)方法,如果現(xiàn)在只關(guān)心窗口關(guān)閉方法,則只在子類(lèi)中覆寫(xiě)windowClosing()方法即可
通過(guò)WindowAdapter實(shí)現(xiàn)監(jiān)聽(tīng)
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)聽(tīng)器類(lèi)即可
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)部類(lè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)在使用適配器操作類(lèi),則直接編寫(xiě)匿名內(nèi)部類(lèi)就可以減少監(jiān)聽(tīng)類(lèi)的定義
到此這篇關(guān)于Java 入門(mén)圖形用戶(hù)界面設(shè)計(jì)之事件處理上的文章就介紹到這了,更多相關(guān)Java 事件處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java?入門(mén)圖形用戶(hù)界面設(shè)計(jì)之事件處理下
- Java 入門(mén)圖形用戶(hù)界面設(shè)計(jì)之單選按鈕
- Java 入門(mén)圖形用戶(hù)界面設(shè)計(jì)之復(fù)選框
- Java 入門(mén)圖形用戶(hù)界面設(shè)計(jì)之列表框JList
- Java程序圖形用戶(hù)界面設(shè)計(jì)之容器JFrame
- Java程序圖形用戶(hù)界面設(shè)計(jì)之按鈕與布局
- Java程序圖形用戶(hù)界面設(shè)計(jì)之標(biāo)簽組件
- java圖形用戶(hù)界面實(shí)現(xiàn)菜單功能
- Java圖形用戶(hù)界面之列表框
相關(guān)文章
Java運(yùn)算符的知識(shí)點(diǎn)與代碼匯總
這篇文章主要給大家總結(jié)介紹了關(guān)于Java運(yùn)算符知識(shí)點(diǎn)與代碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Spring?Security+JWT簡(jiǎn)述(附源碼)
SpringSecurity是一個(gè)強(qiáng)大的可高度定制的認(rèn)證和授權(quán)框架,對(duì)于Spring應(yīng)用來(lái)說(shuō)它是一套Web安全標(biāo)準(zhǔn),下面這篇文章主要給大家介紹了關(guān)于Spring?Security+JWT簡(jiǎn)述的相關(guān)資料,需要的朋友可以參考下2023-04-04
spring 自動(dòng)注入AutowiredAnnotationBeanPostProcessor源碼解析
這篇文章主要介紹了spring自動(dòng)注入AutowiredAnnotationBeanPostProcessor源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
啟動(dòng)Springboot項(xiàng)目時(shí)找不到Mapper的問(wèn)題及解決
這篇文章主要介紹了啟動(dòng)Springboot項(xiàng)目時(shí)找不到Mapper的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
SpringBoot項(xiàng)目設(shè)置斷點(diǎn)debug調(diào)試無(wú)效忽略web.xml問(wèn)題的解決
這篇文章主要介紹了SpringBoot項(xiàng)目設(shè)置斷點(diǎn)debug調(diào)試無(wú)效忽略web.xml問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Java方法參數(shù)傳遞如何實(shí)現(xiàn)
這篇文章主要介紹了Java方法參數(shù)傳遞如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Spring @Profile注解實(shí)現(xiàn)多環(huán)境配置
這篇文章主要介紹了Spring @Profile注解實(shí)現(xiàn)多環(huán)境配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

