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;@Overridepublic void paint(Graphics g) {super.paint(g);//画出小圆球,每次按键其实都是根据新的x、y重新画了一次小球g.fillOval(x, y , 20, 20);}//有字符输出时,该方法就会触发@Overridepublic void keyTyped(KeyEvent e) {}//当某个键按下,该方法会触发,一般我们在这里写触发的逻辑即可@Overridepublic void keyPressed(KeyEvent e) {//System.out.println((char)e.getKeyCode() + " 被按下了..");//根据用户按下的不同键,来处理小球的移动//每一个键都有对应的code,e.getKeyCode()就是获取当前事件的按键codeif(e.getKeyCode() == KeyEvent.VK_DOWN){  //VK_DOWN就是下箭头的codey++; //this.repaint(); //当使用repaint()时,paint方法将被调用,即完成重绘}else if(e.getKeyCode() == KeyEvent.VK_UP){  //VK_DOWN就是下箭头的codey--;this.repaint();}else if(e.getKeyCode() == KeyEvent.VK_RIGHT){x++;this.repaint();}else if(e.getKeyCode() == KeyEvent.VK_LEFT){x--;this.repaint();}}//当某个键释放,该方法会触发@Overridepublic void keyReleased(KeyEvent e) {}
}

ballMove


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部