场景是这样的:我有JFrame的Java swing应用程序。有textarea你可以输入东西,然后你在另一个textarea获得搜索结果,当你选择其中一个结果时,有一个按钮“下载”。这就是问题所在。当您点击“下载”时,应用程序应显示有关下载文件的完整性的信息。我使用一个名为DownloadManager的类扩展Thread来做这个,它会在一段时间内更新信息。但是我担心同步可能会出现问题。有没有标准的方法来更新没有线程的动态信息?在Java swing类中是否有一个mainloop或类似的东西。你是怎么做到的?
答案 0 :(得分:3)
看看SwingWorker:
http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
可能有更好的方法,但这是我在下载内容和更新进度条时用于进度条的内容。
答案 1 :(得分:2)
任何使用Java更新GUI的操作都应该由GUI事件派发线程完成。要强制在此线程中运行方法,您需要使用SwingUtilities.invokeLater。做任何其他事情都可能导致您的GUI挂起,而不是更新或其他陌生感!
这是一个很好的教程,比我更好地描述它:
答案 2 :(得分:2)
同步没有那么多问题。如果在Swing中使用后台线程,请考虑使用SwingWorker。