请问这段代码错在哪里?在线等

阳光影子 2015-11-03 08:35:46
/*
* 功能是对事件处理机制的理解
* 1、通过上下左右键控制小球的位置
*/
package com.test2;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Demo11_1 extends JFrame{
MyPanel mp=null;

public static void main(String[] args) {
// TODO Auto-generated method stub
Demo11_1 demo=new Demo11_1();
}

public Demo11_1()
{
//新建一个面板
mp=new MyPanel();
this.add(mp);
//添加事件监听
this.addKeyListener(mp); //键盘监听这个类所设定的对象,是对mp的监听
//设置窗体大小
this.setSize(300,400);
//退出时关闭窗口
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//窗体可见
this.setVisible(true);
}
}

//定义自己的面板
class MyPanel extends JPanel implements KeyListener{
int x=10;
int y=10;

//设置画笔属性
public void paint(Graphics g){
//调用父类方法,方法重写
super.paint(g);
//设置画笔颜色
g.setColor(Color.blue);
//绘制一个圆,坐标 宽度 高度
g.fillOval(x,y,20,20);

}

@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_UP){
System.out.println("键被按下"+(char)e.getKeyCode());
y-=10;
}
if(e.getKeyCode()==KeyEvent.VK_DOWN){
System.out.println("键被按下");
y+=10;
}
if(e.getKeyCode()==KeyEvent.VK_LEFT){
System.out.println("键被按下"+e.getKeyCode());
x-=10;
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
x+=10;
}
this.repaint();
}

@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}


}
...全文
202 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
面板里用paintComponent方法,不要用paint
阳光影子 2015-11-03
  • 打赏
  • 举报
回复
[ Q u o t e = 引用楼主 qq118194716 的回复: ]
Exception in thread "main" java.lang.ClassCastException: com.test2.MyPanel cannot be cast to java.awt.event.KeyListener
at java.awt.AWTEventMulticaster.add(AWTEventMulticaster.java:572)
at java.awt.Component.addKeyListener(Component.java:5597)
at com.test2.Demo11_1.<init>(Demo11_1.java:25)
at com.test2.Demo11_1.main(Demo11_1.java:16)
[ / Q u o t e ]
阳光影子 2015-11-03
  • 打赏
  • 举报
回复
论坛回复不能添加图片吗?
Exception in thread "main" java.lang.ClassCastException: com.test2.MyPanel cannot be cast to java.awt.event.KeyListener
at java.awt.AWTEventMulticaster.add(AWTEventMulticaster.java:572)
at java.awt.Component.addKeyListener(Component.java:5597)
at com.test2.Demo11_1.<init>(Demo11_1.java:25)
at com.test2.Demo11_1.main(Demo11_1.java:16)
Usher丶AckMan 2015-11-03
  • 打赏
  • 举报
回复
飏飏一蝶 2015-11-03
  • 打赏
  • 举报
回复
有啥问题? 没感觉有啥啊

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧