国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java學習筆記7.2.2 事件處理 - Swing常用事件

這篇具有很好參考價值的文章主要介紹了Java學習筆記7.2.2 事件處理 - Swing常用事件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

零、本講學習目標

  1. 了解Swing常用事件
  2. 掌握窗體事件處理方法
  3. 掌握鼠標事件處理方法
  4. 掌握按鍵事件處理方法
  5. 掌握動作事件處理方法

一、Swing常用事件

  • Swing常用事件包含窗體事件、鼠標事件、按鍵事件和動作事件
    Java學習筆記7.2.2 事件處理 - Swing常用事件

二、窗體事件

(一)窗體事件概述

  • 對窗體進行操作時,例如窗體的打開、關(guān)閉、激活、停用等,這些動作都屬于窗體事件。Java中提供了一個WindowEvent類用于表示窗體事件。

(二)窗體事件類API概述

  • https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/WindowEvent.html
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(三)窗體事件使用方法

  • 首先需要定義一個實現(xiàn)了WindowListener接口的類作為窗體監(jiān)聽器,然后通過addWindowListener()方法將窗體對象與窗體監(jiān)聽器進行綁定。
  • 窗口監(jiān)聽器提供了七個抽象方法
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(四)窗體事件案例演示

  • c07.s02.p02包里創(chuàng)建WindowEventDemo
    Java學習筆記7.2.2 事件處理 - Swing常用事件
package c07.s02.p02;

import javax.swing.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

/**
 * 功能:窗口事件演示
 * 作者:華衛(wèi)
 * 日期:2022年12月11日
 */
public class WindowEventDemo extends JFrame {
    public static void main(String[] args) {
        // 創(chuàng)建窗口對象
        JFrame frame = new JFrame("窗體事件演示");

        // 設置窗口屬性
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 給窗口注冊監(jiān)聽器
        frame.addWindowListener(new WindowListener() {
            @Override
            public void windowOpened(WindowEvent e) {
                System.out.println("windowOpened--窗體打開事件");
            }

            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("windowClosing--窗體正在關(guān)閉事件");
            }

            @Override
            public void windowClosed(WindowEvent e) {
                System.out.println("windowClosed--窗體已關(guān)閉事件");
            }

            @Override
            public void windowIconified(WindowEvent e) {
                System.out.println("windowIconified--窗體圖標化事件");
            }

            @Override
            public void windowDeiconified(WindowEvent e) {
                System.out.println("windowDeiconified--窗體取消圖標化事件");
            }

            @Override
            public void windowActivated(WindowEvent e) {
                System.out.println("windowActivated--窗體激活事件");
            }

            @Override
            public void windowDeactivated(WindowEvent e) {
                System.out.println("windowDeactivated--窗體停用事件");
            }
        });
    }
}
  • 運行程序,查看結(jié)果
    Java學習筆記7.2.2 事件處理 - Swing常用事件
  • 大家看看七個窗口事件觸發(fā)順序
    Java學習筆記7.2.2 事件處理 - Swing常用事件

三、鼠標事件

(一)鼠標事件概述

  • 用戶會經(jīng)常使用鼠標來進行選擇、切換界面等操作,這些操作被定義為鼠標事件,其中包括鼠標按下、鼠標松開、鼠標單擊等。Java中提供了一個MouseEvent類用于表示鼠標事件。幾乎所有的組件都可以產(chǎn)生鼠標事件。

(二)鼠標事件類API文檔

  • https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/MouseEvent.html
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(三)鼠標事件使用方法

  • 首先需要通過實現(xiàn)MouseListener接口定義監(jiān)聽器(也可以通過繼承適配器MouseAdapter類來實現(xiàn)),然后調(diào)用addMouseListener()方法將監(jiān)聽器綁定到事件源對象。
  • 鼠標監(jiān)聽器提供了五個抽象方法
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(四)鼠標事件案例演示

  • c07.s02.p02包里創(chuàng)建MouseEventDemo
    Java學習筆記7.2.2 事件處理 - Swing常用事件
package c07.s02.p02;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

/**
 * 功能:鼠標事件演示
 * 作者:華衛(wèi)
 * 日期:2022年12月11日
 */
public class MouseEventDemo {
    public static void main(String[] args) {
        // 創(chuàng)建窗口對象
        JFrame frame = new JFrame("鼠標事件演示");
        // 設置窗口邊界
        frame.setBounds(200, 200, 300, 200);
        // 設置屏幕居中(采用相對定位方式)
        frame.setLocationRelativeTo(null);
        // 設置窗口布局
        frame.setLayout(new FlowLayout());

        // 創(chuàng)建按鈕對象
        JButton btnTest = new JButton("測試按鈕");
        // 將按鈕添加到窗口
        frame.add(btnTest);

        // 設置窗口可見
        frame.setVisible(true);
        // 設置默認關(guān)閉方式(關(guān)閉窗口就退出應用程序)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 給按鈕注冊鼠標監(jiān)聽器
        btnTest.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("mouseClicked--鼠標完成單擊事件");
            }

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("mousePressed--鼠標按下事件");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("mouseReleased--鼠標放開事件");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("mouseEntered--鼠標進入按鈕區(qū)域事件");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("mouseExited--鼠標移出按鈕區(qū)域事件");
            }
        });
    }
}
  • 運行程序,查看結(jié)果
    Java學習筆記7.2.2 事件處理 - Swing常用事件
  • 大家看看鼠標事件觸發(fā)的先后次序
    Java學習筆記7.2.2 事件處理 - Swing常用事件

如何區(qū)分用戶單擊了鼠標左鍵、右鍵還是滾輪

常量 作用
MouseEvent.BUTTON1 左鍵常量,用來判定鼠標左擊事件
MouseEvent.BUTTON2 滾輪常量,用來判定鼠標滾輪點擊事件
MouseEvent.BUTTON3 右鍵常量,用來判定鼠標右擊事件
  • 修改mouseClicked(MouseEvent e)方法
    Java學習筆記7.2.2 事件處理 - Swing常用事件
@Override                                                           
public void mouseClicked(MouseEvent e) {                            
    switch (e.getButton()) {                                        
        case MouseEvent.BUTTON1:                                    
            System.out.println("mouseClicked--鼠標左擊事件");             
            break;                                                  
        case MouseEvent.BUTTON2:                                    
            System.out.println("mouseClicked--鼠標中鍵單擊事件");           
            break;                                                  
        case MouseEvent.BUTTON3:                                    
            System.out.println("mouseClicked--鼠標右擊事件");             
            break;                                                  
    }                                                               
}                                                                   
  • 運行程序,查看結(jié)果
    Java學習筆記7.2.2 事件處理 - Swing常用事件
  • 注意鼠標左擊、中鍵單擊和右擊事件
    Java學習筆記7.2.2 事件處理 - Swing常用事件

四、按鍵事件

(一)按鍵事件概述

  • 按鍵操作也是最常用的用戶交互方式,例如鍵盤按下、釋放等,這些操作被定義為按鍵事件。Java中提供了一個KeyEvent類表示按鍵事件。

(二)按鍵事件類API文檔

  • https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/KeyEvent.html
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(三)按鍵事件使用方法

  • 處理按鍵事件的監(jiān)聽器對象需要實現(xiàn)KeyListener接口或者繼承KeyAdapter類;然后調(diào)用addKeyListener()方法將監(jiān)聽器綁定到事件源對象。
  • 按鍵監(jiān)聽器提供了三個抽象方法
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(四)按鍵事件案例演示

  • c07.s02.p02包里創(chuàng)建KeyEventDemo
    Java學習筆記7.2.2 事件處理 - Swing常用事件
package c07.s02.p02;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

/**
 * 功能:按鍵事件演示
 * 作者:華衛(wèi)
 * 日期:2022年12月11日
 */
public class KeyEventDemo {
    public static void main(String[] args) {
        // 創(chuàng)建窗口對象
        JFrame frame = new JFrame("按鍵事件演示");
        // 設置窗口邊界
        frame.setBounds(200, 200, 300, 200);
        // 設置屏幕居中(采用相對定位方式)
        frame.setLocationRelativeTo(null);
        // 設置窗口布局
        frame.setLayout(new FlowLayout());

        // 創(chuàng)建文本框?qū)ο?/span>
        JTextField txtTest = new JTextField(15);
        // 將文本框添加到窗口
        frame.add(txtTest);

        // 設置窗口可見
        frame.setVisible(true);
        // 設置默認關(guān)閉方式(關(guān)閉窗口就退出應用程序)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 給文本框注冊按鍵監(jiān)聽器
        txtTest.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyPressed(KeyEvent e) {
                // 獲取按鍵字符
                char keyChar = e.getKeyChar();
                // 獲取按鍵字符的鍵碼
                int keyCode = e.getKeyCode();
                System.out.println("按鍵字符:" + keyChar + "\t按鍵代碼:" + keyCode);
            }

            @Override
            public void keyReleased(KeyEvent e) {
            }
        });
    }
}
  • 運行程序,查看結(jié)果
    Java學習筆記7.2.2 事件處理 - Swing常用事件

  • 依次按了插入鍵、Shift鍵、Shift鍵、f、a、g、l、9、k鍵
    Java學習筆記7.2.2 事件處理 - Swing常用事件

  • 說明:雖然輸入的是小寫字母“a”,但是鍵碼確實對應的大寫字母“A”的ASCII碼“65”。文章來源地址http://www.zghlxwxcb.cn/news/detail-484529.html

五、動作事件

(一)動作事件概述

  • 動作事件與前面三種事件有所不同,它不代表某類事件,只是表示一個動作發(fā)生了。例如,在關(guān)閉一個文件時,可以通過鍵盤關(guān)閉,也可以通過鼠標關(guān)閉。在Java中,動作事件用ActionEvent類表示。

(二)動作事件類API文檔

  • https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/event/ActionEvent.html
    Java學習筆記7.2.2 事件處理 - Swing常用事件

(三)動作事件使用方法

  • 處理動作事件的監(jiān)聽器對象需要實現(xiàn)ActionListener接口,然后調(diào)用addActionListener()方法將監(jiān)聽器綁定到事件源對象。

(四)登錄窗口事件處理

  • c07.s02.p01包里的LoginFrame拷貝到c07.s02.p02包,更名為ActionEventDemo
    Java學習筆記7.2.2 事件處理 - Swing常用事件
package c07.s02.p02;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * 功能:登錄窗口 - 動作事件演示
 * 作者:華衛(wèi)
 * 日期:2022年12月11日
 */
public class ActionEventDemo extends JFrame {
    /**
     * 構(gòu)造方法
     *
     * @param title
     * @throws HeadlessException
     */
    public ActionEventDemo(String title) throws HeadlessException {
        super(title); // 調(diào)用父類構(gòu)造方法傳入標題參數(shù)
        initGUI(); // 調(diào)用初始化圖形用戶界面方法
    }

    /**
     * 初始化圖形用戶界面方法
     */
    private void initGUI() {
        // 創(chuàng)建三個面板
        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        JPanel panel3 = new JPanel();
        // 獲取內(nèi)容面板
        JPanel panel = (JPanel) getContentPane();
        // 設置面板panel的布局為表格布局
        panel.setLayout(new GridLayout(3,1));
        // 將三個小面板添加到面板panel里
        panel.add(panel1);
        panel.add(panel2);
        panel.add(panel3);

        /* 第一個面板里要添加用戶名標簽與文本框 */
        // 創(chuàng)建用戶名標簽
        JLabel lblUsername = new JLabel("用戶名:");
        // 創(chuàng)建用戶名文本框
        JTextField txtUsername = new JTextField(15);
        // 將標簽與文本框添加到第一個面板
        panel1.add(lblUsername);
        panel1.add(txtUsername);

        /* 第二個面板里要添加密碼標簽與文本框 */
        // 創(chuàng)建密碼標簽
        JLabel lblPassword = new JLabel("密    碼:");
        // 創(chuàng)建密碼文本框
        JPasswordField txtPassword = new JPasswordField(15);
        // 將標簽與文本框添加到第二個面板
        panel2.add(lblPassword);
        panel2.add(txtPassword);

        /* 第三個面板里要添加兩個按鈕 */
        // 創(chuàng)建登錄按鈕
        JButton btnLogin = new JButton("登錄");
        // 創(chuàng)建取消按鈕
        JButton btnCancel = new JButton("取消");
        // 將兩個按鈕添加到第三個面板
        panel3.add(btnLogin);
        panel3.add(btnCancel);

        // 設置窗口邊界
        setBounds(200, 200, 300, 200);
        // 設置屏幕居中
        setLocationRelativeTo(null);
        // 設置窗口緊湊
        pack();
        // 設置窗口可見
        setVisible(true);
        // 設置默認關(guān)閉方式
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 給【取消】按鈕注冊動作監(jiān)聽器
        btnCancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 退出應用程序
                System.exit(0);
            }
        });

        // 給【登錄】按鈕注冊動作監(jiān)聽器
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 獲取用戶輸入的用戶名與密碼
                String username = txtUsername.getText().toString();
                String password = new String(txtPassword.getPassword());
                // 判斷用戶輸入的用戶名與密碼是否正確(假定用戶名和密碼都是admin)
                if (username.equals("admin")) {
                    if (password.equals("admin")) {
                        JOptionPane.showMessageDialog(ActionEventDemo.this,
                                "歡迎登錄系統(tǒng)!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
                        ActionEventDemo.this.dispose(); // 關(guān)閉登錄窗口
                    } else {
                        JOptionPane.showMessageDialog(ActionEventDemo.this,
                                "密碼有錯誤!", "提示信息", JOptionPane.ERROR_MESSAGE);
                        txtPassword.requestFocus(); // 讓密碼文本框獲取焦點
                        txtPassword.selectAll(); // 選中密碼全部文本
                    }
                } else {
                    JOptionPane.showMessageDialog(ActionEventDemo.this,
                            "用戶名有錯誤!", "提示信息", JOptionPane.ERROR_MESSAGE);
                    txtUsername.requestFocus(); // 讓用戶名文本框獲取焦點
                    txtUsername.selectAll(); // 選中用戶名全部文本
                }
            }
        });
    }

    /**
     * 主方法
     *
     * @param args
     */
    public static void main(String[] args) {
        // 實例化登錄窗口對象
        ActionEventDemo loginFrame = new ActionEventDemo("登錄窗口");
        JDialog dialog;
    }
}
  • 運行程序,查看結(jié)果
    Java學習筆記7.2.2 事件處理 - Swing常用事件

到了這里,關(guān)于Java學習筆記7.2.2 事件處理 - Swing常用事件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 《Java面向?qū)ο蟪绦蛟O計》學習筆記——CSV文件的讀寫與處理

    ?筆記匯總: 《Java面向?qū)ο蟪绦蛟O計》學習筆記 筆記記錄的不是非常詳實,如果有補充的建議或糾錯,請踴躍評論留言?。?! CSV 是英文 comma-separated values 的縮寫,翻譯為 “逗號分隔值“。 CSV 文件可以理解為以帶逗號分隔(也可以是其他簡單字符分割)的純文本形式存儲

    2024年02月10日
    瀏覽(21)
  • 小程序基礎學習(事件處理)

    小程序基礎學習(事件處理)

    ????????????????????????????????????????????????????????????????????????

    2024年02月01日
    瀏覽(21)
  • Java鍵盤事件處理及監(jiān)聽機制解析

    Java鍵盤事件處理及監(jiān)聽機制解析

    Java事件處理采用了委派事件模型。在這個模型中,當事件發(fā)生時,產(chǎn)生事件的對象將事件信息傳遞給事件的監(jiān)聽者進行處理。在Java中,事件源是產(chǎn)生事件的對象,比如窗口、按鈕等;事件是承載事件源狀態(tài)改變時的對象,比如鍵盤事件、鼠標事件、窗口事件等等。當事件發(fā)

    2024年02月13日
    瀏覽(25)
  • 20230620----重返學習-移動端事件處理-響應式

    移動端的事件處理 移動端事件處理 PC端主要以: 鼠標事件 、 鍵盤事件 、 資源加載事件 、 動畫事件 等事件為主。 其中 click 在 PC端 是 點擊事件 ! 移動端主要以: 手指事件 ( 單手指 和 多手指 )、 資源加載事件 、 動畫事件 等為主。 其中, click 在 移動端 是 單擊事件

    2024年02月09日
    瀏覽(20)
  • 【Elasticsearch學習筆記五】es常用的JAVA API、es整合SpringBoot項目中使用、利用JAVA代碼操作es、RestHighLevelClient客戶端對象

    目錄 一、Maven項目集成Easticsearch 1)客戶端對象 2)索引操作 3)文檔操作 4)高級查詢 二、springboot項目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)數(shù)據(jù)實體類 4)配置類 5)Dao數(shù)據(jù)訪問對象 6)索引操作 7)文檔操作 8)文檔搜索 三、springboot項目集成bboss操作elasticsearch

    2023年04月09日
    瀏覽(37)
  • C#學習筆記8:接口、委托、事件

    C#學習筆記8:接口、委托、事件

    今日繼續(xù)我的C#學習之路,今日學習接口、委托、事件,文章從實踐出發(fā)學習這三個設計理念,并提供完整源碼 目錄 1、接口(多重繼承): 代碼: 運行結(jié)果: 2、委托(方法的代理/函數(shù)指針): 創(chuàng)建控制臺程序?qū)崿F(xiàn)委托: 遇到的報錯及解決: 修改后的代碼: 運行結(jié)果: 3、

    2024年04月15日
    瀏覽(30)
  • 【Android學習筆記】事件監(jiān)聽機制詳解

    兩種事件處理機制 基于監(jiān)聽的事件處理 基于回調(diào)的事件處理 涉及到的三類對象 Event Source事件源,指各個組件。 Event 界面組件上發(fā)生的特定的事情,。 Event Listener監(jiān)聽事件源發(fā)生的事情。并對各種事情作出相應的響應。 Event Handler事件處理器,當事件監(jiān)聽器捕獲事件后,由響

    2024年02月11日
    瀏覽(26)
  • 【C++20】學習筆記:在事件驅(qū)動使用攜程

    【C++20】學習筆記:在事件驅(qū)動使用攜程

    2021年文章: 比物理線程都好用的C++20的協(xié)程,在事件驅(qū)動代碼中的應用解析 大神給出了可以用的例子:

    2024年04月22日
    瀏覽(16)
  • [muduo學習筆記]事件分發(fā)器(Channel、Poller)

    [muduo學習筆記]事件分發(fā)器(Channel、Poller)

    此學習筆記參考施磊老師的muduo教學課程。 目的是搞懂 muduo 網(wǎng)絡庫的核心框架。EventLoop、channel 和 Poller 之間的關(guān)系 整體框架如下: muduo是基于 Reactor 模式的網(wǎng)絡庫,他有三個核心組件支撐一個 reactor 實現(xiàn)持續(xù)的監(jiān)聽一組fd,并根據(jù)每個 fd 上發(fā)生的事件調(diào)用相應的處理函數(shù)。

    2024年02月11日
    瀏覽(20)
  • 【C#學習筆記】委托與事件 (從觀察者模式看C#的委托與事件)

    【C#學習筆記】委托與事件 (從觀察者模式看C#的委托與事件)

    轉(zhuǎn)載請注明出處:??https://blog.csdn.net/weixin_44013533/article/details/134655722 作者:CSDN@|Ringleader| 主要參考: 委托(C# 編程指南) 事件介紹 C# 中的委托和事件簡介 Delegate 類 Exploring the Observer Design Pattern微軟技術(shù)文章翻譯 委托是一種 引用類型 ,表示對具有特定參數(shù)列表和返回類型

    2024年02月04日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包