Sleep方法锁定了我的GUI

我想要做的是在我的程序的一个类中使代码的某些部分等待一段时间,但我的问题是我尝试它的方式使我的GUI卡住了。 我的意思是,按下一个按钮让我的程序等待一段时间,而我的程序正在等待我按下一个按钮,按下按钮但是之后如果我尝试按下任何其他按钮而程序仍在等待我不能,我按下的第一个按钮似乎被按下而另一个按钮无法按下,虽然程序执行我想做的事情(接受所有命令)唯一的问题是我的GUI被锁定。

您需要使用多个线程。 需要完成的任何“工作”可能需要花费任何重要/显着的时间,需要在自己的线程中完成。 (这当然包括你打电话给sleep任何代码。)

这里有3个很好的参考:

对于您正在睡眠的部分以及按下第一个按钮后,您可以尝试这样做:

 SwingUtilities.invokeLater(new Runnable() { public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { } //and whatever you need to do } }); 

如果需要在按下按钮的方法中使用任何局部变量,则它们必须是最终变量。

您没有提供任何代码,因此无法直接输入您的代码。 如果您正在使用Swing并且需要执行耗时的处理,请使用Swing Worker线程。 以下是使用SwingWorker类的教程:

使用Swing Worker线程

您的GUI已加载并在一个线程上运行,您的等待函数在同一个线程上运行,从而锁定GUI。 您需要在单独的线程上启动wait函数。