【急】关于键盘事件的问题

catici 2009-06-20 09:50:54
这是我做的关于键盘事件的一个简单的java程序,就是由两个小方块,按上下左右键第一个小方块可以移动,按WSAD四个键让第二个小方块上下左右的移动。可是运行的时候只是两个静止的小正方形,按键盘没有任何反应,希望大家能给点意见……
谢谢了……


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

public class KeyEventDemo extends JApplet implements KeyListener{
final int size = 20;
int x1,x2,y1,y2;
int x11,y11,x22,y22;
Color fillColor=Color.red;

public void init(){
setBackground(Color.yellow);
Dimension d =this.getSize();
x1=0;y1=d.height/2-size/2;
x11=x1;y11=y1;
x2=d.width/2-size/2;y2=0;
x22=x2;y22=y2;
this.setFocusable(true);
this.setFocusable(false);


}

public void paint(Graphics g)
{
g.setColor(Color.cyan);
g.fillRect(x11,y11,size,size);
g.fillRect(x22,y22,size,size);
g.setColor(fillColor);
g.fillRect(x1,y1,size,size);
g.fillRect(x2,y2,size,size);

}

/*------------第一个小正方形的移动----------------*/
public void keyPressed(KeyEvent e)
{

if(e.getKeyCode()==KeyEvent.VK_UP)
{
y11=y1;x11=x1;
y1=y1-8;
if(y1<=3)y1=3;
repaint();

}

else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{
y11=y1;x11=x1;
y1=y1+8;
if(y1>=getSize().height-3-size)y1=getSize().height-3-size;
repaint();
}

else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{
x11=x1;y11=y1;
x1=x1-8;
if(x1<=3) x1=3;
repaint();

}

else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
x11=x1;y11=y1;
x1=x1+8;
if(x1>=getSize().height-3-size)x1=getSize().height-3-size;
repaint();
}



}
/*------------第二个小正方形的移动----------------*/
public void keyTyped(KeyEvent e)
{
char ch=e.getKeyChar();
if(ch=='W'||ch=='w')
{
y22=y2;x22=x2;
y2=y2-8;
if(y2<=3)y2=3;
repaint();

}

else if(ch=='S'||ch=='s')
{
y22=y2;x22=x2;
y2=y2+8;
if(y2>=getSize().height-3-size)y2=getSize().height-3-size;
repaint();
}

else if(ch=='A'||ch=='a')
{
x22=x2;y22=y2;
x2=x2-8;
if(x2<=3) x2=3;
repaint();

}

else if(ch=='D'||ch=='d')
{
x22=x2;y22=y2;
x2=x2+8;
if(x2>=getSize().height-3-size)x2=getSize().height-3-size;
repaint();

}


}

public void keyReleased(KeyEvent e){}

}




...全文
56 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
catici 2009-06-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zuijiejina 的回复:]
楼主帮你改好咯,关键是你没有对japplet进行监听
[/Quote]

谢谢你哦……
O(∩_∩)O~
catici 2009-06-26
  • 打赏
  • 举报
回复
麻烦知道的人能不能帮忙一下啊?
zuijiejina 2009-06-26
  • 打赏
  • 举报
回复
楼主帮你改好咯,关键是你没有对japplet进行监听
zuijiejina 2009-06-26
  • 打赏
  • 举报
回复
[code=java]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class KeyEventDemo extends JApplet implements KeyListener{



final int size = 20;
int x1,x2,y1,y2;
int x11,y11,x22,y22;
Color fillColor=Color.red;


public void init(){
this.addKeyListener(this);
setBackground(Color.yellow);
Dimension d =this.getSize();
x1=0;y1=d.height/2-size/2;
x11=x1;y11=y1;
x2=d.width/2-size/2;y2=0;
x22=x2;y22=y2;
this.setFocusable(true);
// this.setFocusable(false);


}

public void paint(Graphics g)
{
g.setColor(Color.cyan);
g.fillRect(x11,y11,size,size);
g.fillRect(x22,y22,size,size);
g.setColor(fillColor);
g.fillRect(x1,y1,size,size);
g.fillRect(x2,y2,size,size);


}


/*------------第一个小正方形的移动----------------*/
public void keyPressed(KeyEvent e)
{

if(e.getKeyCode()==KeyEvent.VK_UP)
{

y11=y1;x11=x1;
y1=y1-8;
if(y1 <=3)y1=3;
repaint();

}

else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{
y11=y1;x11=x1;
y1=y1+8;
if(y1>=getSize().height-3-size)y1=getSize().height-3-size;
repaint();
}

else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{
x11=x1;y11=y1;
x1=x1-8;
if(x1 <=3) x1=3;
repaint();

}

else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
x11=x1;y11=y1;
x1=x1+8;
if(x1>=getSize().height-3-size)x1=getSize().height-3-size;
repaint();
}


}
/*------------第二个小正方形的移动----------------*/
public void keyTyped(KeyEvent e)
{
char ch=e.getKeyChar();
if(ch=='W'||ch=='w')
{
y22=y2;x22=x2;
y2=y2-8;
if(y2 <=3)y2=3;
repaint();

}

else if(ch=='S'||ch=='s')
{
y22=y2;x22=x2;
y2=y2+8;
if(y2>=getSize().height-3-size)y2=getSize().height-3-size;
repaint();
}

else if(ch=='A'||ch=='a')
{
x22=x2;y22=y2;
x2=x2-8;
if(x2 <=3) x2=3;
repaint();

}

else if(ch=='D'||ch=='d')
{
x22=x2;y22=y2;
x2=x2+8;
if(x2>=getSize().height-3-size)x2=getSize().height-3-size;
repaint();

}


}

public void keyReleased(KeyEvent e){}

}
[code]
zuijiejina 2009-06-26
  • 打赏
  • 举报
回复
是没有重画吗?楼主你测试下,repaint语句执行了吗?或者是事实上重画了,但是japplet没有显示?
阳二快跑 2009-06-22
  • 打赏
  • 举报
回复
public void init(){
setBackground(Color.yellow);
Dimension d =this.getSize();
x1=0;y1=d.height/2-size/2;
x11=x1;y11=y1;
x2=d.width/2-size/2;y2=0;
x22=x2;y22=y2;
this.setFocusable(true);
this.setFocusable(false);
this.addKeyListener(this); //Add
this.setFocusable(true); //Add
this.requestFocus(); //Add
}
catici 2009-06-21
  • 打赏
  • 举报
回复
不好意思,楼上的两位,我按照你们说的去改了,怎么不行呢?
swandragon 2009-06-20
  • 打赏
  • 举报
回复
注释掉this.setFocusable(false);
加上监听

public void init(){
setBackground(Color.yellow);
Dimension d =this.getSize();
x1=0;y1=d.height/2-size/2;
x11=x1;y11=y1;
x2=d.width/2-size/2;y2=0;
x22=x2;y22=y2;
this.setFocusable(true);
//this.setFocusable(false);
addKeyListener(this);
}
lucky_9_9 2009-06-20
  • 打赏
  • 举报
回复

public void keyPressed(KeyEvent e) {
int mes=e.getKeyCode();//接收按键值
if(KeyEvent.VK_DOWN==mes){
//按向下键要做的事
}
if(KeyEvent.VK_UP==mes){
//按向上键要做的事
}
if(KeyEvent.VK_LEFT==mes){
//按向左要做的事
}
if(KeyEvent.VK_RIGHT==mes){
//按向右键要做的事
}

}


62,615

社区成员

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

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