[英]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.