我正在编程一个机器人,它使用带有按钮和文本框的东西的接口,我知道如果你正在使用
Thread.sleep();
然后它会破坏你的界面。我知道
Thread.sleep();
几乎只是暂停当前的线程并在分配的时间后恢复它。我需要在我的程序中暂停一下而不会破坏我的界面,例如相当于
的界面Thread.sleep(1000);
我已经找了好几个小时,在维护界面的同时,我找不到任何可以在程序的一个部分中稍微停顿的东西。我也不知道多线程,所以请尽可能详细地解释一下。在此先感谢帮助我!
答案 0 :(得分:2)
Java Swing用户界面中的所有内容都在一个特殊的线程(Swing线程或“事件调度线程”)上运行。如果使用Thread.sleep()
阻止此线程,则用户界面将停止响应。
为了能够在不阻塞用户界面的情况下睡眠(即故意延迟某些处理),您的程序可能需要在多个线程上运行。我建议你看看Java tutorial on this topic。多线程是一个相当高级的主题,无法用简短的答案进行总结。
目前尚不清楚您要使用sleep
尝试实现的目标 - 如果您只是希望在将来触发某些操作,那么Timer课程可以满足您的需求,而无需额外的线程。
Java库中还有一些helper classes用于在GUI应用程序中的其他线程上运行任务。