Java怎么通过键盘实现动态控制小球移动

这篇具有很好参考价值的文章主要介绍了Java怎么通过键盘实现动态控制小球移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这一操作依赖于Java的事件机制,键盘按键会触发一个事件, 我们捕获到这个事件,然后做相应的处理。

所谓动态移动其实就是根据坐标不断地重新绘制。

思路

  1. 定义一个MyPanel类 继承 JPanel
  2. 然后在MyPanel的paint方法里画出一个小球,将它的坐标设置为全局变量
  3. 让我们的面板类实现键盘监听器KeyListener,然后在keyPressed方法里更新小球的坐标,然后repaint()
  4. 把我们的MyPanel对象放到一个JFrame里显示,让JFrame对象也注册键盘监听事件 ,传入我们实现了KeyListener的 MyPanel对象,作为键盘事件的处理方法,addKeyListener(myPanel)
package event;

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

/**
 * 演示小球通过键盘控制上下左右的移动,依靠java事件机制实现
 */
public class Ballmove extends JFrame {
    public static void main(String[] args) {
        new Ballmove();
    }
    public Ballmove() {
        MyPanel myPanel = new MyPanel();
        this.add(myPanel);
        //让窗口 JFrame 对象可以监听到键盘事件
        this.addKeyListener(myPanel);
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

//KeyListener是一个监听器,可以监听键盘事件,类比可以推知,还有鼠标监听器等
class MyPanel extends JPanel implements KeyListener {
    //x和y是小球的左上角坐标,为了让他动起来,设置为变量
    int x = 10;
    int y = 10;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        //画出小圆球,每次按键其实都是根据新的x、y重新画了一次小球
        g.fillOval(x, y , 20, 20);

    }

    //有字符输出时,该方法就会触发
    @Override
    public void keyTyped(KeyEvent e) {
    }

    //当某个键按下,该方法会触发,一般我们在这里写触发的逻辑即可
    @Override
    public void keyPressed(KeyEvent e) {
        //System.out.println((char)e.getKeyCode() + " 被按下了..");
        //根据用户按下的不同键,来处理小球的移动
        //每一个键都有对应的code,e.getKeyCode()就是获取当前事件的按键code
        if(e.getKeyCode() == KeyEvent.VK_DOWN){  //VK_DOWN就是下箭头的code
            y++; //
            this.repaint(); //当使用repaint()时,paint方法将被调用,即完成重绘
        }else if(e.getKeyCode() == KeyEvent.VK_UP){  //VK_DOWN就是下箭头的code
            y--;
            this.repaint();
        }else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
            x++;
            this.repaint();
        }else if(e.getKeyCode() == KeyEvent.VK_LEFT){
            x--;
            this.repaint();
        }
    }

    //当某个键释放,该方法会触发
    @Override
    public void keyReleased(KeyEvent e) {
    }
}

ballMove文章来源地址https://www.toymoban.com/news/detail-524401.html

到了这里,关于Java怎么通过键盘实现动态控制小球移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Three.js - 通过键盘控制模型移动和攻击(二十五)

    上节加载了模型和模型动画,本节使用键盘控制模型移动和连贯动画实现攻击动作。 基础模板 上节讲述加载了模型,并实现了动画。本节在上节的基础上进行修改。 修改灯光并添加阴影 开启阴影渲染。 添加方向光,开启阴影投射。 在地面网格上开启阴影接收。 修改模型网

    2024年02月10日
    浏览(42)
  • 教你用JavaScript实现键盘控制小方块移动

    欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了! 我们来用JavaScript编程实战案例,做一个键盘控制小方块移动的案例。该案例主要实现通过按下键盘的上下左右按钮来控制小方块在页面中的移动。通过实战我们会学习到position定位,键盘监听事件以及动态给

    2024年02月09日
    浏览(31)
  • 【Unity】简单案例脚本实现 | 鼠标观察/键盘控制移动飞行/行走/碰撞检测

    《Unity5实战-使用C#和Unity开发多平台游戏》第二章-构建一个让你置身3D空间的演示 鼠标观察/键盘控制移动飞行/行走/碰撞检测 Unity版本:2019.4.23f1c1 注意脚本名称和组件添加,不在文章中一一强调 场景模型都是在资源商店选择的免费下载(选择Sort by Price(Low to High)排序)搜索

    2024年02月04日
    浏览(43)
  • 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动

     [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞

    2024年02月15日
    浏览(30)
  • Java使用Maven工程操作OpenGL ES绘制三角形和圆形;绘制完成后操作键盘控制然图形移动

    PS:想快速看到效果的小伙伴,可以在引入依赖后,先跳到完整代码部分 第一步:依赖引入 第二步:创建类,引入需要的包,设置全局参数 1.创建类 2. 包引入 3. 全局参数 第三步:定义一个初始化方法 init() 1. GLFW 错误信息的回调函数 这样做,在发生 GLFW 错误时,错误信息将

    2024年02月08日
    浏览(36)
  • unity通过脚本实现漫游功能 wasd控制玩家移动,空格跳跃,鼠标控制视野旋转,滑轮控制镜头伸缩

    将场景中的摄像机删除,在玩家的控制面板中添加Camera组件,和rigibody组件   using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour {     public float speed;     Rigidbody rigid;     void Start()     {                 rigid = GetComponentRigidbody();     }  

    2024年02月10日
    浏览(33)
  • 键盘按键事件 通过键盘上下左右按键移动界面上图标

    #main.c文件 #include “keyevent.h” #include int main(int argc, char *argv[]) { QApplication a(argc, argv); KeyEvent w; w.show(); } #include “keyevent.h”//头文件 #ifndef KEYEVENT_H #define KEYEVENT_H #include #include #include class KeyEvent : public QWidget { Q_OBJECT public: KeyEvent(QWidget *parent = 0); ~KeyEvent(); void drawPix(); void keyPre

    2024年02月09日
    浏览(37)
  • 键盘控制鼠标移动

    记录一下, windows用autohotkeys crtl + 方向键 / 空格 :移动鼠标 / 鼠标左击 crtl + shift + 方向键 / 空格: 快速移动鼠标 / 鼠标右击 mac(更新一下,换了个带小键盘的键盘,直接用系统的鼠标键功能。。。深井冰-)。                                 用hammerspoon ,这个还没做

    2024年02月17日
    浏览(34)
  • 通过easyui实现动态控制表格字段显示、导出表格数据

    学过layui前端框架的都知道,layui默认帮我们实现了控制表格字段显示以及数据的导出功能。 1、控制表格字段显示 2、数据导出 导出为excel 导出为pdf 导出按钮的右边那个按钮就是打印pdf的 那么,easyui要怎么实现这些功能呢?这篇文章就要介绍一下怎么通过前端实现表格数据

    2024年02月14日
    浏览(29)
  • unity键盘控制移动操作(WASD)篇

        今天仔细重新研究了下移动操作,发现input.key那种方法纯属是讨巧操作,实际上它并不好用,在高性能电脑中,我们的电脑每帧有可能会运行上千帧,如果采用这种方法会发生发卡顿,远远没有以下方案丝滑 方案来自unity官网教学视频改写本篇博客内容,原网址如下:

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包