Java的监听处理事件--小球移动案例
创始人
2024-05-26 09:28:10
0

Java的监听处理事件

Java的监听事件处理主要是针对怎么去做交互的,鼠标和键盘怎么和程序交互。本文将提供一个小球移动的案例来介绍。

案例:小球移动。

通过键盘控制上下左右键移动,电脑屏幕展示小球做出对应的移动。

1、Java绘图–认识画板

想要完成小球移动的前提是,我们需要学习怎么使用Java进行绘图。

1.1、准备一个画板(MyPanel类)

//先定义一个MyPanel,继承JPanel。画图形,在面板上画
class MyPanel extends JPanel{//1、MyPanel对象是一个画板//2、Graphics g把g理解成一支画笔//3、Graphics提供了很多绘图方法@Overridepublic void print(Graphics g) {//绘图方法super.print(g);//画出一个圆形g.drawLine(10,20,10,20);g.drawRect(10,10,100,100);}}

1.2、准备一个画框实现画图操作

public class DrawCircle extends JFrame{//JFrame可以理解成一个画框//定义一个面板private MyPanel mp=null;public static void main(String[] args) {new DrawCircle();}public DrawCircle(){//构造器//初始化一个面板mp=new MyPanel();//把我们的面板放入到画框,窗口this.add(mp);//设置一下窗口的大小this.setSize(400,300);this.setVisible(true);}
}
  • 这个画图实现类 ** DrawCircle 需要继承 JFrame这个类(JFrame这个类就是一个窗体的意思,类似于C#的窗体)**
  • 定义一个画板对象 mp,在构造器里进行初始化,再把这个画板对象加入到我们的画框中。(画板是你画好的东西,画好之后把画板插入到画框中)
  • main方法启动绘画

2、Java交互实现

上面已经实现了Java作图,画好了小球,接下来要实现键盘和小球的交互。

实现交互最重要的是要去监听,通过java的监听事件监听键盘的操作:让MyPanel类去继承 KeyListener

class MyPanel extends JPanel implements KeyListener

完成这个继承事件以后会自动生成三个方法,:

  1. public void keyTyped(KeyEvent e)
  2. public void keyPressed(KeyEvent e)
  3. public void keyReleased(KeyEvent e)

我们在这三个方法中完成业务逻辑即可。

 @Overridepublic void paint(Graphics g) {super.paint(g);g.fillOval(x,y,20,20);//默认黑色}//有字符输出时,该方法就会被触发@Overridepublic void keyTyped(KeyEvent e) {}//当某个键按下,该方法就会被触发@Overridepublic void keyPressed(KeyEvent e) {}//当某个键释放时,该方法就会被触发@Overridepublic void keyReleased(KeyEvent e) {}

3、小球移动完整代码

package com.event;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.security.Key;/*** @author * @version 1.0* 演示小球通过键盘控制上下左右的移动-->讲解java的事件控制*/
public class BallMove extends JFrame{MyPanel mp=null;public static void main(String[] args) {new BallMove();}//构造器public BallMove(){mp=new MyPanel();this.add(mp);this.setSize(400,300);//窗口JFrame对象可以监听键盘事件,即可以监听到面板上发生的事件this.addKeyListener(mp);/*** 一般在Java图形程序编写过程中经常会用到这个方法,不难* 理解这个方法的用途就是在一个JFrame执行关闭操作时,将退出程序。如果* 在代码里没加这个方法,那么在点击框架的”叉叉“退出框架后,程序仍然没有退出,* 只是JFrame被关闭了。* */this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}
}
//面板,可以画出小球
//keyListener是监听器,可以监听键盘事件
class MyPanel extends JPanel implements KeyListener {/*** 为了让小球可以移动,把它的左上角的坐标设置成变量* */int x=10;int y=10;@Overridepublic void paint(Graphics g) {super.paint(g);g.fillOval(x,y,20,20);//默认黑色}//有字符输出时,该方法就会被触发@Overridepublic void keyTyped(KeyEvent e) {}//当某个键按下,该方法就会被触发@Overridepublic void keyPressed(KeyEvent e) {
//        System.out.println((char) e.getKeyCode()+"被按下...");/*** 根据用户按下的不同按键,来处理小球的移动(上下左右的键)* 在java中会给每一个键盘的值分配一个值* */if (e.getKeyCode()==KeyEvent.VK_DOWN){//KeyEvent.VK_DOWN表示向下箭头的codey++;}else if (e.getKeyCode()==KeyEvent.VK_UP){y--;}else if (e.getKeyCode()== KeyEvent.VK_LEFT){x--;} else if (e.getKeyCode()==KeyEvent.VK_RIGHT) {x++;}//让面板重绘,相当于更新一下面板this.repaint();}//当某个键释放时,该方法就会被触发@Overridepublic void keyReleased(KeyEvent e) {}
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...