java netbeans 和 jprogress 吧

java netbeans and jprogress bar

在我的程序中,我必须使用 JProgress Bar 来实时显示,有多少像素已经被加密了..所以我在互联网上查找,我发现我应该使用 Thread,我试过了但没有用,在这里是我所做的:

public class progress_barr extends Thread 
 {   
public void run ()
   {
  JPB_crypt.setValue(prog); // prog is manipulated in showpixels function 
       System.err.println("progress here !");
   }

}
public class calculate extends Thread
{
    public void run()
    {
        showPixel();
    }
}

比起我后来给他们打电话,这就是我使用它的方式

    JPB_crypt.setValue(0);
    appel=1; // to initiate show function 
    calculate calc = new calculate();
    progress_barr pb = new progress_barr();
    calc.start();
    pb.start();

问题仍然存在,我的程序完成了数据处理,而不是将我的 jprogress 设置为 100%..不是在进行中,而是立即! 我需要他们同时工作

您使用线程的一般想法是正确的,但是为了能够根据您的计算进度随时更新 JProgressBar,您需要使用 SwingWorker。

SwingWorker 背后的想法是您可以在后台使用方法 运行,通过使用 doInBackground 方法,然后发布您的结果以供 UI 使用而无需锁定它。

您在您的代码中所做的实际上是让两个线程同时启动。第一个计算你需要计算的任何东西,第二个应该动态更新进度条。

这种方法行不通,因为每次第二个线程都必须等待第一个线程结束它的工作才能获得结果。

您可以在此处阅读有关 SwingWorker 的更多信息:

https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html