java键盘事件问题

importjava.awt.Frame;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;p... import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Test
{
public static void main(String args[])
{
new S();

}
}

class S extends Frame implements KeyListener
{
S()
{
this.addKeyListener(this);
this.setSize(200,200);
this.setVisible(true);
}

public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == 38 && e.getKeyCode() == 39) //为什么我同时按住了向上和向右键不会输出这句话? 如果这样做不行,应该怎么改?求高手!
{
System.out.println("你按了向上键和向右键");

}
}

public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}

}
展开
 我来答
百度网友845f74e61
2012-06-14 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1623万
展开全部
if (e.getKeyCode() == 38 && e.getKeyCode() == 39)

不会同时满足这样的条件是
应该改成或的关系

if (e.getKeyCode() == 38 || e.getKeyCode() == 39)
hitzsf
2012-06-14 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1165万
展开全部
虽然人的感觉是两个按钮同时按了,但是程序还是会分先后的,所以程序不可能同时收到两个事件,需要另外的方法处理,一般引入一个判断的标志就行了
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Test
{
public static void main(String args[])
{
new S();

}
}

class S extends Frame implements KeyListener
{
private int flag;
S()
{
flag = 0;
this.addKeyListener(this);
this.setSize(200,200);
this.setVisible(true);
}

public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == 38 || e.getKeyCode() == 39)
{
flag += e.getKeyCode();
}
if(flag == 77)
{
System.out.println("你同时按了向上键和向右键");
}

}

public void keyReleased(KeyEvent e) {
flag = 0;
}
public void keyTyped(KeyEvent e) {}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chensi0207y
2012-06-14 · TA获得超过113个赞
知道答主
回答量:68
采纳率:0%
帮助的人:75.2万
展开全部
你需要保存以前按得键
boolean up = false; //向上键
boolean right = fase; //向右键

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case :KeyEvent.VK_UP:
up = true;
break;
case :KeyEvent.VK_RIGHT:
right = true;
break;
}
if( up && right){
System.out.println("你按了向上键和向右键");
}
}

public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case :KeyEvent.VK_UP:
up = false;
break;
case :KeyEvent.VK_RIGHT:
right = false;
break;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sohozhuang
2012-06-14 · TA获得超过240个赞
知道小有建树答主
回答量:770
采纳率:0%
帮助的人:569万
展开全部
键盘同时只发送一个键,你每次获得的是一个键码,不是两个~~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式