【发布时间】:2014-07-24 22:49:41
【问题描述】:
我正在尝试更新进度条,但我做不到。我的代码是这样的:
public class MyWorker extends SwingWorker<Void, Void> {
public Void doInBackground(){
howMany=Integer.parseInt(textField.getText());
String result=longMethod(howMany);
label.setText("Hello, you have "+result);
}
}
public class Event implements ActionListener{
public void actionPerformed(ActionEvent e){
label2.setText("Whatever");
button.setEnabled(false);
myWorer.addPropertyChangeListener(this);
myWorker.execute();
}
public void propertyChange(PropertyChangeEvent event){
if("progress".equals(event.getPropertyName())){
int currentPercent = (int)event.getNewValue();
progressBar.setValue(currentPercent);
}
}
}
所以我不能在doInBackground 中使用setProgress,因为更新是由longMethod() 进行的,该方法包含一个大的慢循环,放置在另一个类中。我做了类似的事情,从该方法传递一个变量到包含 JFrame 的类,然后如果您单击另一个按钮,则可以查看该进度。
我不知道是否有某种方法可以使该按钮(或文本字段)每 X 秒刷新一次而无需单击它或使用方法 longMethod() 中的 setProgress
谢谢!
【问题讨论】:
标签: java swing swingworker jprogressbar