当前位置: 首页 > 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/a/303599.html

相关文章:

  • Mac——Cpolar内网穿透实战
  • Kivy App开发之UX控件DropDown下拉列表
  • Mysql常见知识点
  • 深度解析 Python 网络框架:Django、Tornado、Flask 和 Twisted
  • seo泛目录(seo泛目录程序)
  • 大语言模型训练的数据集从哪里来?
  • 上海市计算机学会竞赛平台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问题修复