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
来源:优快云
原文:https://blog.youkuaiyun.com/hoho_12/article/details/52004939
版权声明:本文为博主原创文章,转载请附上博文链接!