我正在尝试执行一个程序,该程序在用户显示GUI后执行 6-7秒。这里的问题是用户必须等待6-7秒而不进行任何处理或进度通知。
所以我想要做的是,当 MainApp ma = new MainApp(); 代码执行时,我想为用户显示 gif 图片说程序正在执行。写入图像代码的显示 ShowProgressPic spp = new ShowProgressPic();
我有一个名为 end 的布尔数据类型变量,它将在 MainApp()构造函数的最后一个语句中设置为true。当 MainApp ma = new MainApp(); 的执行结束时,我想停止显示gif图像。
请帮我解决这个问题。 谢谢。
答案 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中使用事件和监听器进行多线程处理(通常也建议使用)。