我有一个全屏幕窗口,播放一个简单的动画,我想这样做,当我按任意键时,全屏恢复,程序停止。 关键听众类看起来像这样:事件处理程序和循环
import java.awt.event。*;
公共类键器具的KeyListener {
private framerun animation=new framerun();
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){
animation.x=false;
}
}
动画的方法运行,运行,具有while循环看起来像这样:
public void run(DisplayMode dm){
Screen s=new Screen();
s.setFullScreen(dm, this);
while(true){
try{
System.out.println(x);
Thread.sleep(300);
}catch(Exception e){}
if(!x)
s.RestoreScreen();
repaint();
}
}
PS:X是一个初始值为true的布尔值,在构造函数中启动。
这是主要的方法:
public static void main(String args []){
DisplayMode dm=new DisplayMode(800, 600, 16,DisplayMode.REFRESH_RATE_UNKNOWN);
framerun f=new framerun();
key k=new key();
f.addKeyListener(k);
f.run(dm);
}
现在这个完美的作品,如果没有while循环。全屏关闭,程序停止。但是用while循环时,按下某个键时没有响应。按预期x的值不会更改为false。 想法?
为什么你就不能调用's.RestoreScreen'焦点问题来自MouseList ener'? – MadProgrammer 2015-02-05 22:39:21
我试了一下,但好像它在我按下按键时甚至没有注意到该操作。它甚至不会将x的值更改为false。那就是问题所在。 while循环与事件侦听器冲突吗? – 2015-02-05 22:41:43