Java GUI事件處理及添加對話框?qū)崿F(xiàn)方式
事件處理
在窗口添加好面板和組件之后,但只是一個(gè)界面,不能執(zhí)行其中的功能,需要添加事件處理來實(shí)現(xiàn)相應(yīng)的功能。用戶與GUI組件進(jìn)行交互就會(huì)發(fā)生事件,如:按下一個(gè)按鈕、用鍵盤輸入一個(gè)字符、點(diǎn)擊鼠標(biāo)等。
Java中,事件處理的基本思路:
- 一個(gè)源(事件源)產(chǎn)生一個(gè)事件(事件對象)并把它送到監(jiān)聽器那里,監(jiān)聽器只是簡單地等待,直到它收到一個(gè)事件,一旦事件被接受,監(jiān)聽器將處理這些事件;
- 一個(gè)事件源必須注冊監(jiān)聽器以便監(jiān)聽器可以接受關(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)按下,但沒有松開");
}
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠標(biāo)松開");
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("鼠標(biāo)懸停");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("鼠標(biāo)移走");
}
});3.鍵盤事件
例如向文本域添加鍵盤事件
jTextField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// System.out.println("鍵盤輸入完成");
}
@Override
public void keyPressed(KeyEvent e) {
// System.out.println("鍵盤按下");
}
@Override
public void keyReleased(KeyEvent e) {
// "釋放鍵盤"
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è)對話框
if (res == 0){//確認(rèn)退出
dispose();
}
}
});對話框
JOptionPane對話框
1.showMessageDialog():消息對話框
- 五種消息類型,圖標(biāo)不同:
| ERROR_MESSAGE | 錯(cuò)誤消息提示 |
| INFORMATION_MESSAGE | 信息提示 |
| WARNING_MESSAGE | 警告提示 |
| QUESTION_MESSAGE | 問題提示 |
| PLAIN_MESSAGE | 簡潔提示 |
- 例如:
JOptionPane.showMessageDialog(null, "發(fā)送內(nèi)容不能為空");
- 圖示:

2.showConfirmDialog():確認(rèn)對話框
主要有四種消息類型圖標(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)文章
SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn)教程
開發(fā)過程中,后臺(tái)的參數(shù)校驗(yàn)是必不可少的,下面這篇文章主要給大家介紹了關(guān)于SpringBoot參數(shù)校驗(yàn)的最佳實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
SpringBoot使用Tika進(jìn)行文檔解析的完整指南
Tika是一款A(yù)pache開源的,跨平臺(tái),支持多品種文本類型的內(nèi)容檢測和提取工具,本文主要為大家介紹了SpringBoot使用Tika進(jìn)行文檔解析的完整步驟,希望對大家有所幫助2025-07-07
Java LongAdder使用與應(yīng)用實(shí)戰(zhàn)
LongAdder是 Java 并發(fā)編程中為高并發(fā)計(jì)數(shù)而生的利器,本文就來詳細(xì)的介紹一下Java LongAdder的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2025-10-10
運(yùn)用springboot搭建并部署web項(xiàng)目的示例
這篇文章主要介紹了運(yùn)用springboot搭建并部署web項(xiàng)目的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Spring Cloud微服務(wù)之間調(diào)用Dubbo的詳細(xì)過程
SpringCloudAlibabaDubbo是阿里巴巴開源的Dubbo與SpringCloud的深度集成方案,本文介紹Spring Cloud微服務(wù)之間調(diào)用Dubbo的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧2026-02-02
Java修改maven的默認(rèn)jdk版本為1.7的方法
這篇文章主要介紹了Java修改maven的默認(rèn)jdk版本為1.7的方法,需要的朋友可以參考下2018-02-02
Java實(shí)現(xiàn)駝峰與下劃線互轉(zhuǎn)的方法
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)駝峰與下劃線互轉(zhuǎn)的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
HertzBeat 監(jiān)控 SpringBoot 使用案例(最新整理)
文章介紹HertzBeat作為無Agent的SpringBoot監(jiān)控工具,支持指標(biāo)采集、Grafana可視化、閾值告警及多通道通知,簡化云原生監(jiān)控流程,本文給大家介紹HertzBeat監(jiān)控SpringBoot使用案例,感興趣的朋友一起看看吧2025-08-08

