if (e.getKeyCode() == 38 && e.getKeyCode() == 39)
不会同时满足这样的条件是
应该改成或的关系
if (e.getKeyCode() == 38 || e.getKeyCode() == 39)
虽然人的感觉是两个按钮同时按了,但是程序还是会分先后的,所以程序不可能同时收到两个事件,需要另外的方法处理,一般引入一个判断的标志就行了
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) {}
}