我从事的项目有一个针对gui的课程,另一个针对我的计算课程。

我想检索一些值,例如类计算的主for循环的增量(i),以便相应地更新GUI类中的JProgressBar。

我曾尝试通过使用SwingWorker来做到这一点,但我有些失落。

而且我不能在主程序内部运行execute方法,有什么建议吗?

提前致谢,
Anestis

最佳答案

一种方法是从包含JProgressBar的类中将属性更改侦听器附加到SwingWorker线程,如下所示:

worker.addPropertyChangeListener(new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent arg0) {
            if (arg0.getPropertyName().equals("progress")) {
                bar.setValue(Integer.parseInt(arg0.getNewValue().toString());
            }
        }
});


然后,当辅助线程的值达到特定间隔时,您将触发PropertyChangeEvent以更新进度栏。

SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
     public Void doInBackground() {
         for (int i=0; i<100; i++) {
             // Do something
             firePropertyChange("progress", i-1, i);
         }

         return null;
     }

     public void done() {
        try {
            get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
     }
}

关于java - 从外部类检索值,以便相应地显示JProgressBar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28579733/

10-10 16:52