我想创建一个在设备中安装文件的应用程序。但我有一个问题来实现进度,我在我的fram中使用的代码调用类安装如下,execShellCmd是调用安装到所有设备的方法。 value是Install类提供的静态值。我想实现一个重新安装和重载的进度条,以便进行安装。
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
Thread t;
t = new Thread(){
private int postion;
public void run(){
Install install = new Install();
int position = 0;
String fileName = directory;
String shellCommand = fileName;
// for (int position =0; postion < 105;position +5) {
jProgressBar1.setValue(Install.value);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
position += 5;
//}
install.execShellCmd(shellCommand);
//jTextArea1.setText(error.err.toString());
}
};
t.start();
}
答案 0 :(得分:2)
如图here所示,您可以使用ProcessBuilder
执行脚本。解析从getInputStream()
获得的组合流,以评估脚本的实际进度。使用该信息来调整JProgresBar
。要在GUI中保留活跃度,请在SwingWorker
的doInBackground()
方法中执行此操作,您可以从中setProgress()
调用此方法。
答案 1 :(得分:1)
嗯..据说这种线程方法不适合JProgressBar。而是与Timer
一起移动。在线程内部使用JProgressBar时,我遇到了同样的问题。使用以下链接获取更多信息,它也有工作示例
http://www.coderanch.com/t/566728/GUI/java/JProgressBar-Napkin-feel-working
是的,请看下面的答案