0

假设我有一个 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
}
4

2 回答 2

2

试试看;-)

说真的,你是什么意思你想编程在按下空格键时运行?除非程序已经在运行,否则您将如何接收KeyEvent

至于您问题的另一半,您拥有的代码通常应该在按下空格键时使 Java 退出。请注意,使用计数器没有意义,因为一旦 Java 退出,计数器的值就会丢失。另请注意,这JApplet是“一般”的例外......您通常不能System.exit从小程序调用,因为小程序在浏览器的控制下运行,Java 只应该在用户关闭浏览器时退出,而不是每当您的小程序完成时。可能有其他小程序在同一个 JVM 中运行,它们可能还没有完成它们正在做的事情。

于 2009-03-26T04:42:49.030 回答
0

可能,我认为 AWT 代码是正确的,但其余部分非常神秘(不是我不理解它,但它并没有表达你实际上做得很好,不是吗?)

怎么样:

boolean running=false;

...
if(running)
    System.exit(0);
else
    running=true;

反而?

更新:在阅读了您在另一篇文章中的讨论后,您会有一点陌生感。

AWT线程有这个概念。使用 AWT 完成的所有操作都必须在该线程上完成。因此,当按下空格键时,您将在 AWT 线程上获得该事件。您可能不想保留它,因为只要您坚持下去,它就会阻止其他图形更新。

我建议看一下 SwingTimer 设置一个摆动计时器每隔几毫秒通知您一次,该通知将进入 AWT 线程,以便您可以使用它来单击您的按钮,然后退出并等待下一个计时器事件。

当他们再次按空格键时, system.exit() 应该可以正常工作。

于 2009-03-26T04:41:25.523 回答