事件的学习

可以被组件识别的操作。

事件源:按钮、图片、窗体.....

事件:某些操作

如:鼠标单击、鼠标划入....

绑定监听:当事件源上发生了某个事件,则执行某段代码

ActionListener:

java 复制代码
package Puzzlegame.com.wxj.test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyActionListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击了");
    }
}
package Puzzlegame.com.wxj.test;

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

public class Test3{
    public static void main(String[] args) {
        JFrame jFrame=new JFrame();
        jFrame.setSize(603,680);
        jFrame.setTitle("事件演示");
        jFrame.setAlwaysOnTop(true);
        jFrame.setLocationRelativeTo(null);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jFrame.setLayout(null);
        //创建一个按钮对象
        JButton jtb=new JButton("点我呀");
        //设置位置和宽高
        jtb.setBounds(0,0,100,50);
        //给按钮添加动作监听
        //jtb:组件对象,表示你要给哪个组件添加事件
        //addActionListener:表示我要给组件添加哪个事件监听(动作监听包含鼠标左键点击,空格)
        //参数:表示事件被触发之后要执行的代码
jtb.addActionListener(new MyActionListener());
/*jtb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("达咩~不要点我哟~");
    }
});*/
        //把按钮添加到界面当中
        jFrame.getContentPane().add(jtb);
        jFrame.setVisible(true);
    }
}
java 复制代码
package Puzzlegame.com.wxj.test;

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

public class Test3{
    public static void main(String[] args) {
        JFrame jFrame=new JFrame();
        jFrame.setSize(603,680);
        jFrame.setTitle("事件演示");
        jFrame.setAlwaysOnTop(true);
        jFrame.setLocationRelativeTo(null);
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jFrame.setLayout(null);
        //创建一个按钮对象
        JButton jtb=new JButton("点我呀");
        //设置位置和宽高
        jtb.setBounds(0,0,100,50);
        //给按钮添加动作监听
        //jtb:组件对象,表示你要给哪个组件添加事件
        //addActionListener:表示我要给组件添加哪个事件监听(动作监听包含鼠标左键点击,空格)
        //参数:表示事件被触发之后要执行的代码
        //jtb.addActionListener(new MyActionListener());
jtb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("达咩~不要点我哟~");
    }
});
        //把按钮添加到界面当中
        jFrame.getContentPane().add(jtb);
        jFrame.setVisible(true);
    }
}
java 复制代码
package Puzzlegame.com.wxj.test;

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

public class MyJFrame extends JFrame implements ActionListener {
    //创建一个按钮对象
    JButton jtb1=new JButton("点我呀");
    JButton jtb2=new JButton("再点我呀");
    public MyJFrame() {
        //设置界面的宽高
        this.setSize(603,680);
        //设置界面的标题
        this.setTitle("拼图单机版 V1.0");
        //设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置游戏的关闭模式
        this.setDefaultCloseOperation(3);
        //取消默认的居中放置,只有取消了才能按照xy轴的形式添加组件
        this.setLayout(null);
       //设置位置和宽高
       jtb1.setBounds(0,0,100,50);
    jtb1.addActionListener(this);
       //设置位置和宽高
       jtb2.setBounds(100,0,100,50);
       jtb2.addActionListener(this);
      this.getContentPane().add(jtb1);
        this.getContentPane().add(jtb2);
        this.setVisible(true);
   }

    @Override
    public void actionPerformed(ActionEvent e) {
//对当前的按钮进行判断
        //获取当前被操作的那个按钮对象
    Object source=    e.getSource();
if(source==jtb1){
    jtb1.setSize(200,200);
}else if(source==jtb2){
    Random r=new Random();
    jtb2.setLocation(r.nextInt(500),r.nextInt(500));
}
    }
}
package Puzzlegame.com.wxj.test;

public class Test4 {
    public static void main(String[] args) {
        new MyJFrame();
    }
}

MouseListener:

java 复制代码
package Puzzlegame.com.wxj.test;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;

public class MyJFrame2 extends JFrame implements MouseListener {
    //创建一个按钮对象
    JButton jtb1=new JButton("点我呀");
    public MyJFrame2() {
        //设置界面的宽高
        this.setSize(603,680);
        //设置界面的标题
        this.setTitle("拼图单机版 V1.0");
        //设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置游戏的关闭模式
        this.setDefaultCloseOperation(3);
        //取消默认的居中放置,只有取消了才能按照xy轴的形式添加组件
        this.setLayout(null);
       //设置位置和宽高
       jtb1.setBounds(0,0,100,50);
     //给按钮绑定鼠标事件
        jtb1.addMouseListener(this);
      this.getContentPane().add(jtb1);
        this.setVisible(true);
   }

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("单击");
    }

    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("按下不松");
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("松开");
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("划入");
    }

    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("划出");
    }
}
package Puzzlegame.com.wxj.test;

public class Test4 {
    public static void main(String[] args) {
        new MyJFrame2();
    }
}

KeyListener:

java 复制代码
package Puzzlegame.com.wxj.test;

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

public class MyJFrame3 extends JFrame  implements KeyListener {
    public MyJFrame3() {
        //设置界面的宽高
        this.setSize(603, 680);
        //设置界面的标题
        this.setTitle("拼图单机版 V1.0");
        //设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置游戏的关闭模式
        this.setDefaultCloseOperation(3);
        //取消默认的居中放置,只有取消了才能按照xy轴的形式添加组件
        this.setLayout(null);
        //快捷键
        //给整个窗体添加键盘监听
        this.addKeyListener(this);

        this.setVisible(true);
    }

    @Override
    public void keyTyped(KeyEvent e) {
        System.out.println("");
    }
//细节1
    //如果我们按下一个按键没有松开,那么会重复调用
    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("按下不松");
    }

    @Override
    public void keyReleased(KeyEvent e) {
        System.out.println("松开");
        //获取键盘上每一个按键的编号
         int code=e.getKeyCode();
      if(code ==65){
           System.out.println("现在按下的是A");
       }else if(code ==66){
           System.out.println("现在按下的是B");
       }
    }
}package Puzzlegame.com.wxj.test;

public class Test4 {
    public static void main(String[] args) {
        new MyJFrame3();
    }
}
相关推荐
richxu2025100124 分钟前
学完了江科大STM32,下一步该怎么学?
stm32·单片机·嵌入式硬件·学习
网络与设备以及操作系统学习使用者1 小时前
Linux与Windows核心差异深度解析
linux·运维·网络·windows·学习
知识分享小能手2 小时前
Flask入门学习教程,从入门到精通,Flask智能租房——前期准备 知识点详解(5)
python·学习·flask
淳杰2 小时前
学习笔记 | playwright用法
笔记·学习
三品吉他手会点灯2 小时前
STM32F103 学习笔记-21-串口通信(第6节)-串口发送命令控制RGB灯
笔记·stm32·单片机·嵌入式硬件·学习
炽烈小老头4 小时前
【每天学习一点算法 2026/05/25】矩阵中的最长递增路径
学习·算法·矩阵
wuxinyan1234 小时前
工业级大模型学习之路021:LangChain零基础入门教程(第四篇):文档加载与文本分块技术
人工智能·python·学习·langchain
Qres8214 小时前
Git基础命令学习笔记
笔记·git·学习
奔跑的Ma~4 小时前
Azure OpenAI Codex 详细配置与使用教程(国内用户专属)
学习·microsoft·flask·ai编程·azure
Harm灬小海6 小时前
【云计算学习之路】学习Centos7系统-Linux下用户及组管理
linux·运维·服务器·学习·云计算