我有一个java程序和一个基于Swing的GUI。在主类中,有一些计算被分组到一个单独的线程中。我的问题是:当这些计算开始时,我需要启动一个秒表,在它们继续进行时显示计时器,在它们完成时停止。如果我只需要计算剩下的时间,我会在单独的线程中启动秒表,在主线程中完成所有计算,当它们完成时,停止秒表线程并显示计时器。据我所知,java swing是单线程的。这样我就可以在主秋千上重新绘制秒表的数字
发布于 2011-03-20 07:37:40
我读到过
SwingWorker似乎就是我需要的。
我会赞同@Ernest Hill的javax.swing.Timer建议,但是这个SwingWorker example是值得探索的。它可能会帮助你利用现有的线程代码。
发布于 2011-03-20 03:56:51
最简单的方法是使用javax.swing.Timer。很容易让计时器发送定期更新事件来更新GUI,并且可以根据需要轻松地停止或重置计时器。
发布于 2011-03-22 20:53:15
首先,我想对大家说声谢谢。
这个问题是通过这样一种方式使用SwingWorker解决的:我在SwingWorker的孩子时期开发的主swing窗口。所有计算均采用doInBackground方法。当它们继续执行时,在SwingUtilities.invokeLater中调用了一个计时器(在单独的线程中)。在done方法中,当所有计算完成时,计时器停止。
https://stackoverflow.com/questions/5364511
复制相似问题