我想创建一个在设备中安装文件的应用程序。但我在实现进度时遇到问题,下面给出了我在 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();
}
如here所示,您可以使用
ProcessBuilder
来执行脚本。解析从 getInputStream()
获得的组合流,以评估脚本的实际进度。使用该信息来调节您的 JProgresBar
。要保持 GUI 中的活跃性,请在 doInBackground()
的
SwingWorker
方法中执行此操作,您可以从中调用 setProgress()
。
嗯...据说这种线程方式不适合JProgressBar。相反,请使用
Timer
移动。我在尝试在线程内使用 JProgressBar 时遇到了同样的问题。使用以下链接获取更多信息,它也有工作示例:
http://www.coderanch.com/t/566728/GUI/java/JProgressBar-Napkin-feel-working
是的,请看下面我的回答: