假设我有一个GUI,我希望程序在按下空格键时实际运行,但是如果再次按下空格键则我希望程序退出。这样的事情会起作用吗?
public class MouseClicker extends JApplet implements KeyListener{
int counter = 0;
MouseClicker m1 = new MouseClicker();
//all of the other methods
public void keyPressed( KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode==KeyEvent.VK_SPACE){
m1.click();
counter ++;
if(counter%2==0)
System.exit(0);
}
//other methods needed for KeyListener
}
答案 0 :(得分:2)
试一试,看看; - )
说真的,你是什么意思在按空格键时要编程运行?除非程序已在运行,否则您将如何收到KeyEvent
?
至于问题的另一半,通常,当按下空格键时,您应该使Java退出。请注意,使用计数器没有意义,因为只要Java退出,计数器的值就会丢失。另请注意,JApplet
是“一般”的例外...您通常无法从applet调用System.exit
,因为applet在浏览器的控制下运行而Java只是假设在用户关闭浏览器时退出,而不是在applet完成时退出。可能有其他applet在同一个JVM中运行,但他们可能还没有完成他们正在做的事情。
答案 1 :(得分:0)
可能,我认为AWT代码是正确的,但其余部分非常神秘(不是我不理解它,但它并不表达你实际上做得很好,是吗?)
怎么样:
boolean running=false;
...
if(running)
System.exit(0);
else
running=true;
代替?
更新: 在阅读了另一篇文章的讨论后,你会有一点陌生感。
这是AWT线程的概念。必须在该线程上完成AWT所做的一切。因此,当按下空格键时,您将在AWT线程上获得该事件。你可能不想保留它,因为只要你抓住它,就会阻止其他图形更新。
我建议查看SwingTimer设置一个摇摆计时器,每隔几毫秒通知你一次,并且该通知将在AWT线程中进入,以便您可以使用它来单击您的按钮,然后退出并等待下一个计时器事件
当他们再次按空格键时,system.exit()应该可以正常工作。