我正在尝试执行一个程序,在为用户显示图形用户界面之后,大约要花费6-7秒的时间执行。这里的问题是,用户必须等待6-7秒,没有任何处理或进度通知。
所以我想要做的是,在执行MainApp ma =新MainApp();代码时,我希望为正在执行该程序的用户显示gif图片。图片代码的显示是用ShowProgressPic spp = new ();编写的
我有一个名为end的布尔数据类型变量,它将在MainApp()构造函数的最后一条语句中设置为true。当MainApp ma = new ();的执行结束时,我希望停止显示gif图像。
请帮我解决这个问题。谢谢你,
发布于 2011-06-11 18:07:02
假设您的问题涉及Swing GUI,我建议您使用SwingWorker在后台线程中执行长效程序。然后,当线程完成时,您有两种或更多的方式从那里开始。您可以在其done方法中使用SwingWorker调用代码来关闭进度显示,也可以让保存和执行SwingWorker的代码通过PropertyChangeListener侦听SwingWorker,并在状态属性为SwingWorker.StateValue.DONE时采取行动。
发布于 2011-06-11 18:05:20
看看线。您必须将进程加载到与主线程不同的线程中,以显示进度。为了显示进度,您可以使用JProgressBar
下面是一个具有输出打印以显示百分比的部分伪代码示例:
int maxSufftoDo = 500;
new Thread() {
public void run() {
while not done {
do part of stuff;
updateStatus(numOfStuffDone * 100 / maxStufftoDo);
}
}
}.start();
public void updateStatus(int s) {
System.out.println(i + "% done");
}发布于 2011-06-11 18:08:15
您应该在GUI中使用事件和侦听器进行多线程处理(通常也推荐)。
https://stackoverflow.com/questions/6317626
复制相似问题