| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:[求助]这个程序哪错了?
只看楼主 加入收藏
Caesar
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-23
收藏
 问题点数:0 回复次数:1 
[求助]这个程序哪错了?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.bruceeckel.swing.*;

class BasicModel{
int x,y,width=26,height=26;
BasicModel(int x,int y){
this.x=x;
this.y=y;
}
}
class Model1 extends JPanel implements Runnable{
private BasicModel[] m1={new BasicModel(100,100),new BasicModel(100,126),new BasicModel(100,152),new BasicModel(100,178),};
private int i;
private long eventtime=0,delaytime=1000;
public void paintComponent(Graphics g){
super.paintComponent(g);
for(i=0;i<m1.length;i++){
g.setColor(Color.BLACK);
g.drawRect(m1[i].x,m1[i].y,m1[i].width-1,m1[i].height-1);
g.setColor(Color.RED);
g.fillRect(m1[i].x,m1[i].y,m1[i].width-2,m1[i].height-2);
}
}
public void goRight(){
for(i=0;i<m1.length;i++)
m1[i].x+=26;
repaint();
}
public void goLeft(){
for(i=0;i<m1.length;i++)
m1[i].x-=26;
repaint();
}
public void run(){
while(m1[3].y<400){
if(System.currentTimeMillis()>=eventtime){
for(i=0;i<m1.length;i++)
m1[i].y+=26;
repaint();
eventtime=System.currentTimeMillis()+delaytime;
}
}
}

}

public class DrawModels2 extends JFrame{
private static Model1 m=new Model1();
class KListener extends KeyAdapter{
public void KeyPressed(KeyEvent e){
switch(e.getKeyCode())
{ case KeyEvent.VK_RIGHT : m.goRight();break;
case KeyEvent.VK_LEFT : m.goLeft();break;
}
}
}
KListener kl=new KListener();
public DrawModels2(){
Container cp=getContentPane();
m.addKeyListener(kl);
cp.add(m);
}
public static void main(String[] args){
DrawModels2 a=new DrawModels2();
Thread b=new Thread(a.m);
Console.run(a,500,500);
b.start();
}
}
这个程序的目的是产生一个矩形,然后一边下落,一边可以受键盘操作向左向右移动,其他的效果都还好,就是不能受键盘操作,请各位帮忙看看,谢谢!!
main方法里的Console.run(a,500,500)是为了让程序结果显示出来写的一个小小的工具类里的方法,跟其他没什么联系.

2006-02-23 18:24
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

你把事件监听器注册错了
应该是注册到DrawModels2上面,应该在它的构造函数里面加上一句
this.addKeyListener(new KListener( ));
就应该OK了,你注册到m的时候,到发生了键盘事件,它调用事件函数,m 里面有m吗

[此贴子已经被作者于2006-2-26 12:07:59编辑过]


可惜不是你,陪我到最后
2006-02-26 12:05
快速回复:[求助]这个程序哪错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022061 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved