目前我有一个使用System.currentTimeMillis的简单秒表代码。然而,当我尝试让它更新JTextField时,我的程序会冻结,该JTextField保存已经过的秒数,它会冻结。我已经四处搜索,如果我理解正确,我就无法使用相同的“线程”运行无限循环和GUI。我是一个相当缺乏经验的程序员,并且想知道线程是否应该是我应该尝试掌握/学习/实现的。
答案 0 :(得分:2)
对于业务代码,您应该使用与更新UI的AWT / Swing线程不同的线程。如果你阻止AWT / Swing Thread,UI也会被阻止。
使用新线程进行倒计时并从AWT线程更新UI,这可以通过SwingUtilities.invokeLater完成,请参阅https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html#invokeLater%28java.lang.Runnable%29
答案 1 :(得分:-1)
线程起初可能看起来很可怕,但它并不像你想象的那么可怕。学习扩展和实现时,它也是一个很好的起点。看看这里有一些简单的例子来帮助您入门:https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html