我已经实现了一个计时器来运行进度条,如下所示

 public class UpdateOnline extends JInternalFrame {

//UI related code goes here

        class jbutton_proceed_action implements ActionListener {

                public void actionPerformed(ActionEvent e) {
                    int result = -1;
                    Timer time = new Timer(50, updateBar);
                    time.start();
                    result = doUpload("bulk");
                }
            }


        ActionListener updateBar = new ActionListener() {

                public void actionPerformed(ActionEvent ae) {
                    int val = jProgressBar1.getValue();
                    jProgressBar1.setValue(++val);

                }
            };

        }


发生的是,当我单击名为上载的按钮时,它在类jbutton_proceed_action中执行了操作。称为doUpload的方法将数据上传到数据库仅需2分钟即可完成。我的问题是,尽管我已经在调用doUpload方法进度条之前启动了计时器,但直到doUpload方法完成后才开始运行。请问有人可以帮助我解决这个问题吗?

我需要在出现隆起时运行prgressbar的意思

最佳答案

这是因为doUpload在Swing(UI)EDT(事件分派线程)上运行并被阻止。使用SwingWorker是处理长时间运行的任务并且仍然运行良好的一种方法。确保所有UI更新/操作仅从EDT发生-上一个链接(到SwingWorker路径)包含详细信息。

07-24 20:30