当前位置: 首页 > article >正文

Java重修笔记 第五十四天 坦克大战(三)事件处理机制

  • 事件处理机制
1. 让面板类实现 KeyListener 键盘监听器接口,并重写其中的方法

        (1)keyTyped 方法监听字符输出,当字符输出后触发

        (2)keyPressed 方法监听按下动作,当按键按下后触发

        (3)keyReleased 方法监听抬起动作,当某个键松开后触发

2. 重写监听事件方法体后,还需调用 repaint 方法重绘面板 
3. 将面板对象放入画框的监听器

        在画框类的构造方法中加入 addKeyListener(mp);

public class Event01 extends JFrame {
    private MyPanel mp = null;

    public static void main(String[] args) {
        new Event01();
    }

    public Event01() throws HeadlessException {
        mp = new MyPanel();
        add(mp);
        setVisible(true);
        setSize(1200, 900);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        addKeyListener(mp);
    }
}

class MyPanel extends JPanel implements KeyListener {
    int x = 10;
    int y = 10;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(x, y, 50, 50);
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            // 按了下方向键
            y++;
        } else if (e.getKeyCode() == KeyEvent.VK_UP) {
            y--;
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            x--;
        } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            x++;
        }
        repaint();
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}


http://www.kler.cn/news/303599.html

相关文章:

  • 上海市计算机学会竞赛平台2024年7月月赛丙组池塘计数
  • SEAFARING靶场漏洞攻略
  • AnyGPT:多模态语言模型,任意处理语音、图像和音乐
  • 【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署
  • 项目进度一
  • 数据库常规操作
  • vue引入三维模型
  • 【绿盟科技盟管家-注册/登录安全分析报告】
  • 2024CCPC网络预选赛
  • raksmart大带宽服务器租用
  • mycat双主高可用架构部署-MySQL5.7环境部署第一台
  • 「漏洞复现」紫光电子档案管理系统 selectFileRemote SQL注入漏洞
  • TestCraft - GPT支持的测试想法生成器和自动化测试生成器
  • 前端使用COS上传文件
  • 为什么要进行MySQL增量备份?
  • 【数据结构和算法实践-树-LeetCode112-路径总和】
  • 力扣: 四数相加II
  • Linux安装管理多版本JDK
  • CSS Clip-Path:重塑元素边界的艺术
  • mysql慢sql问题修复
  • 计算机毕业设计 自习室座位预约系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • qt操作excel(QAxObject详细介绍)
  • 论文解读《LaMP: When Large Language Models Meet Personalization》
  • 浏览器插件利器--allWebPluginV2.0.0.20-alpha版发布
  • 首批通过!华为云CodeArts Snap智能开发助手通过可信AI智能编码工具评估,获当前最高等级
  • 气膜体育馆:为学校打造智能化运动空间—轻空间
  • 响应式网站真的就只是多了一个媒体查询吗?
  • CSS学习17--CSS3 过渡、2D变形、3D变形、动画
  • linux 内核代码学习(九)--Linux内核启动和文件系统
  • MySQL 子查询