簡體   English   中英

Jprogressbar無法正常工作

[英]Jprogressbar not working

我正在嘗試通過網絡上傳一些文件。 上傳時間不確定。 所以希望在上傳過程中顯示不確定的jprogressbar。 但問題是我的jprogressbar和上傳不能同時工作。 我在單獨的線程中嘗試上傳,同時將jprogressbar保留在EDT中。 我嘗試了幾種不同的方法。 其中一些是:1)實現Runnable並在run()中我上傳了文件。 進度條一直在美國東部時間。 (沒有用。)2)有兩個獨立的線程,並在每個線程中處理上傳和進度條處理。 (不工作)。 這個代碼是:

Thread oThread = new Thread(new Runnable() {

   @Override
   public void run() 
   {
        progressBar.setIndeterminate(true);
        progressBar.setVisible(true);
        progressBar.validate();

   }
});

Thread oThread1 = new Thread(new Runnable() 
{

    @Override
    public void run() {
        logger.info("Upload result from ***: "+ newport.upload(textbyte, wavbyte,xmlbyte, filename));

        }
    });

3)然后我重寫了整個事情並嘗試使用Executor這樣的不同方法:

executor.execute(new Runnable() {
    @Override
    public void run() {
            upload actions

            SwingUtilities.invokeLater(new Runnable() {
                 progBar.setVisible(false);
            });
    }});

但這些技術都沒有奏效。 我是新手,我想知道是否所有這一切都必須要顯示jprogressbar(不確定)。 我想知道是否有更簡單,更容易的方法來做到這一點。

您必須在代碼示例下使用setValue()作為更改進度條才能使用jporgressbar

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

public class Tets  {

    public static void main(String [] args) {
       JFrame frame =new JFrame();
       JPanel panel=new JPanel();

       JProgressBar bar=new JProgressBar();
       bar.setMaximum(100);
       bar.setMinimum(0);
       panel.add(bar);


       frame.getContentPane().add(panel);
       frame.pack();
       frame.setVisible(true);

       for(int i=0;i<100;i++){
           bar.setValue(i);
           try {
               Thread.sleep(100);
           } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

       }
   }

}

祝好運

您實際上並未在已發布的代碼中的任何位置設置進度條的值。

此外,這看起來像是使用SwingWorker的好例子,它將在不同的線程上執行工作,然后通過進度回調。 這些回調的好處是已經在Swing線程上發生了。

SwingWorker示例甚至包括設置進度條:

http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM