本文共 2400 字,大约阅读时间需要 8 分钟。
import java.awt.Color;import java.awt.event.*;import java.awt.event.KeyListener; //必须要有这句话,且没办法自动import好奇怪 //import com.sun.glass.events.KeyEvent;不可以是这句//import java.awt.event.*; //必须要有这句话,且没办法自动import好奇怪 import java.awt.*; public class MyBall{ public static void main(String args[]){ Frame w=new Frame(); w.setSize(300,400); w.setBackground(Color.black); MyPanel mp=new MyPanel(); w.add(mp); //注册事件 w.addKeyListener(mp); mp.addKeyListener(mp); w.setVisible(true); }}class MyPanel extends Panel implements KeyListener{//KeyListener鼠标右键"source-override implements methods int x=30; int y=30; public void paint(Graphics g){ g.setColor(Color.WHITE); g.fillOval(x, y, 20, 20); } @Override public void keyPressed(KeyEvent arg0){ if(arg0.getKeyCode()==KeyEvent.VK_LEFT){ x--; } if(arg0.getKeyCode()==KeyEvent.VK_UP){ y--; } if(arg0.getKeyCode()==KeyEvent.VK_RIGHT){ x++; } if(arg0.getKeyCode()==KeyEvent.VK_DOWN){ y++; } repaint(); } @Override public void keyReleased(KeyEvent arg0){ } @Override public void keyTyped(KeyEvent arg0){ } //public void keyReleased(KeyEvent arg0){ //} //public void keyTyped(KeyEvent argo){ //} }
另外一个正确代码
package com.event1;//通过上下左右键,来控制一个小球的位置 import java.awt.*;import javax.swing.*;import java.awt.event.*; public class CircleRun extends JFrame{ MyPanel mp=null; public static void main(String[] args) { CircleRun cr=new CircleRun(); } public CircleRun(){ mp=new MyPanel(); this.add(mp); this.addKeyListener(mp); this.setSize(400,300); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } //定义自己的面板class MyPanel extends JPanel implements KeyListener{ int x=10; int y=10; public void paint(Graphics g){ super.paint(g); g.fillOval(x, y, 10, 10); } //键的一个值被输出 @Override public void keyTyped(KeyEvent e) { } //键被按下 @Override public void keyPressed(KeyEvent e) { //System.out.println("键被按下"+e.getKeyCode()); if(e.getKeyCode()==KeyEvent.VK_DOWN){ //System.out.println("12"); 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()函数,来重绘界面 this.repaint(); } //键被释放 @Override public void keyReleased(KeyEvent e) { } }--------------------- 作者:hoho_12 来源:CSDN 原文:https://blog.csdn.net/hoho_12/article/details/52004939 版权声明:本文为博主原创文章,转载请附上博文链接!