使用java中的图像报告运行任务的进度

时间:2011-06-11 18:01:56

标签: java progress

我正在尝试执行一个程序,该程序在用户显示GUI后执行 6-7秒。这里的问题是用户必须等待6-7秒而不进行任何处理或进度通知。

所以我想要做的是,当 MainApp ma = new MainApp(); 代码执行时,我想为用户显示 gif 图片说程序正在执行。写入图像代码的显示 ShowProgressPic spp = new ShowProgressPic();

我有一个名为 end 的布尔数据类型变量,它将在 MainApp()构造函数的最后一个语句中设置为true。当 MainApp ma = new MainApp(); 的执行结束时,我想停止显示gif图像。

请帮我解决这个问题。 谢谢。

3 个答案:

答案 0 :(得分:2)

了解线程。您必须在主therad的不同线程中加载进程以显示进度。为了显示进度,您可以使用JProgressBar

这是一个part-pseudocode示例示例,其中包含用于显示百分比的输出打印:

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");
}

答案 1 :(得分:2)

假设您的问题涉及Swing GUI,我建议您使用SwingWorker在后台线程中执行长效程序执行。然后,当线程完成时,您有两种或更多种方法从那里开始。您可以在其done方法中使用SwingWorker调用代码来关闭进度显示,或者您可以使用保存并执行SwingWorker的代码通过PropertyChangeListener监听SwingWorker,并在状态属性为SwingWorker.StateValue.DONE时执行。

答案 2 :(得分:0)

您应该在GUI中使用事件和监听器进行多线程处理(通常也建议使用)。