Java GUI事件處理及添加對(duì)話框?qū)崿F(xiàn)方式
事件處理
在窗口添加好面板和組件之后,但只是一個(gè)界面,不能執(zhí)行其中的功能,需要添加事件處理來(lái)實(shí)現(xiàn)相應(yīng)的功能。用戶與GUI組件進(jìn)行交互就會(huì)發(fā)生事件,如:按下一個(gè)按鈕、用鍵盤(pán)輸入一個(gè)字符、點(diǎn)擊鼠標(biāo)等。
Java中,事件處理的基本思路:
- 一個(gè)源(事件源)產(chǎn)生一個(gè)事件(事件對(duì)象)并把它送到監(jiān)聽(tīng)器那里,監(jiān)聽(tīng)器只是簡(jiǎn)單地等待,直到它收到一個(gè)事件,一旦事件被接受,監(jiān)聽(tīng)器將處理這些事件;
- 一個(gè)事件源必須注冊(cè)監(jiān)聽(tīng)器以便監(jiān)聽(tīng)器可以接受關(guān)于一個(gè)特定事件的通知。
1.按鈕點(diǎn)擊事件
例如向按鈕1添加點(diǎn)擊事件:
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("點(diǎn)擊登錄");
}
});2.鼠標(biāo)事件
向按鈕2添加鼠標(biāo)事件:
jButton2.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠標(biāo)點(diǎn)擊");
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("鼠標(biāo)按下,但沒(méi)有松開(kāi)");
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠標(biāo)松開(kāi)");
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("鼠標(biāo)懸停");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("鼠標(biāo)移走");
}
});3.鍵盤(pán)事件
例如向文本域添加鍵盤(pán)事件
jTextField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// System.out.println("鍵盤(pán)輸入完成");
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println("鍵盤(pán)按下");
}
@Override
public void keyReleased(KeyEvent e) {
// "釋放鍵盤(pán)"
System.out.println(jTextField.getText());
}
});4.添加窗口事件
例如向當(dāng)前窗口添加窗口事件:
this.addWindowListener(new WindowAdapter() {//窗口適配器WindowAdapter,也可使用new WindowListener()
@Override
public void windowClosing(WindowEvent e) {
int res = JOptionPane.showConfirmDialog(null,"確定退出聊天室?","操作提示",JOptionPane.OK_CANCEL_OPTION);//彈出一個(gè)對(duì)話框
if (res == 0){//確認(rèn)退出
dispose();
}
}
});對(duì)話框
JOptionPane對(duì)話框
1.showMessageDialog():消息對(duì)話框
- 五種消息類型,圖標(biāo)不同:
| ERROR_MESSAGE | 錯(cuò)誤消息提示 |
| INFORMATION_MESSAGE | 信息提示 |
| WARNING_MESSAGE | 警告提示 |
| QUESTION_MESSAGE | 問(wèn)題提示 |
| PLAIN_MESSAGE | 簡(jiǎn)潔提示 |
- 例如:
JOptionPane.showMessageDialog(null, "發(fā)送內(nèi)容不能為空");
- 圖示:

2.showConfirmDialog():確認(rèn)對(duì)話框
主要有四種消息類型圖標(biāo)不同:
| DEFAULT_OPTION | 默認(rèn)選項(xiàng) |
| YES_NO_OPTION | 是/否選項(xiàng) |
| YES_NO_CANCEL_OPTION | 是/否/取消選項(xiàng) |
| OK_CANCEL_OPTION | 確定/取消 |
- 例如:
JOptionPane.showConfirmDialog(null,"確定退出聊天室?","操作提示",JOptionPane.OK_CANCEL_OPTION);
- 圖示:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中你真的會(huì)用Constructor構(gòu)造器嗎之看完本篇你就真的會(huì)了
顯式初始化要求我們?cè)趯?xiě)程序時(shí)就確定初始值,這有時(shí)很不方便。我們可以使用構(gòu)造器(constructor)來(lái)初始化對(duì)象。構(gòu)造器可以初始化數(shù)據(jù)成員,還可以規(guī)定特定的操作。這些操作會(huì)在創(chuàng)建對(duì)象時(shí)自動(dòng)執(zhí)行。下面文字將對(duì)該內(nèi)容做詳細(xì)介紹,需要的小伙伴請(qǐng)參考2021-09-09
springboot2.0+elasticsearch5.5+rabbitmq搭建搜索服務(wù)的坑
這篇文章主要介紹了springboot2.0+elasticsearch5.5+rabbitmq搭建搜索服務(wù)的坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
使用Java反射機(jī)制提高SpringBoot的代碼質(zhì)量和可維護(hù)性
保持好的代碼質(zhì)量和遵守編碼標(biāo)準(zhǔn)是開(kāi)發(fā)可維護(hù)和健壯軟件的重要方面,在本文中,我們將探討如何使用 Java 反射來(lái)提高 Spring Boot 應(yīng)用程序的代碼質(zhì)量和可維護(hù)性,需要的朋友可以參考下2023-10-10
分享我的第一次java Selenium自動(dòng)化測(cè)試框架開(kāi)發(fā)過(guò)程
這篇文章主要介紹了分享我的第一次java Selenium自動(dòng)化測(cè)試框架開(kāi)發(fā)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
啟動(dòng)Tomcat報(bào)錯(cuò)Unsupported major.minor version xxx的解決方法
這篇文章主要為大家詳細(xì)介紹了啟動(dòng)Tomcat報(bào)錯(cuò)Unsupported major.minor version xxx的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
MyBatis通用Mapper中的通用example(排序)詳解
這篇文章主要介紹了MyBatis通用Mapper中的通用example(排序)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
三道java新手入門(mén)面試題,通往自由的道路--JVM
這篇文章主要為大家分享了最有價(jià)值的3道JVM面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對(duì)hashCode方法的設(shè)計(jì)、垃圾收集的堆和代進(jìn)行剖析,感興趣的小伙伴們可以參考一下2021-07-07

