【发布时间】:2014-02-16 15:43:49
【问题描述】:
我为这项工作重新设计了我的代码。应用程序的最后情况如下;
GUI类;
第二类:MySwingWorker
package exampleproject;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.SwingWorker;
public class MySwingWorker extends SwingWorker<Void, Void> {
private GUI myGui; //Reach GUI variables.
public MySwingWorker(GUI myGui) {
this.myGui = myGui;
}
private MySwingWorker swing;
public MySwingWorker() {
this.swing = swing;
}
//get start date from GUI and convert it wanted format.
public String getStartDate (){
String inputStringDate = myGui.StartDateComboBox.getText();
SimpleDateFormat inputFormat = new SimpleDateFormat("dd.MM.yyyy");
Date inputDate = null;
try {
inputDate = inputFormat.parse(inputStringDate);
}
catch (ParseException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
String outputStringDate = outputFormat.format(inputDate);
return outputStringDate;
}
//get end date from GUI and convert it wanted format.
public String getEndDate (){
String inputStringDate = myGui.EndDateComboBox.getText();
SimpleDateFormat inputFormat = new SimpleDateFormat("dd.MM.yyyy");
Date inputDate = null;
try {
inputDate = inputFormat.parse(inputStringDate);
}
catch (ParseException ex) {
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd 23:59:59.999");
String outputStringDate = outputFormat.format(inputDate);
return outputStringDate;
}
@Override
protected Void doInBackground() throws Exception {
int i = 0;
setProgress(i);
String test1 = "Starting Date: '"+getStartDate()+"'"; //LongTask 1
System.out.println(test1);
while(i < 50){
setProgress(i++);
Thread.sleep(5); // random magic number
}
String test2 = "Ending Date: '"+getEndDate()+"'"; //LongTask 2
System.out.println(test2);
while(i < 100){
setProgress(i++);
Thread.sleep(5); // random magic number
}
return null;
}
}
我在 GUI 中有按钮操作;
private void GoButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
MySwingWorker task = new MySwingWorker(GUI.this);
task.execute();
}
当程序启动时,GUI屏幕出现,用户选择两个日期并按下GO按钮。
当我按下按钮 Swingworker 成功地从 GUI 屏幕获取用户选择的值并将结果打印到屏幕上。只是我想为这个项目添加进度监视器。
只是我想要当在 GUI 上单击 GO 按钮时,进度监视器应该出现在屏幕上并显示工作人员状态。但我不知道如何为这个项目实施全新的进度监控框架并说听工人。
谢谢。
【问题讨论】:
-
问题已解决:我将 Swingworker 类和进度条类带到我的主 GUI 类。所以我不再需要使用 costructor 了,现在一切正常。问题是:当从主 GUI 类创建 SwingWorker 类时,我们必须使用构造函数。
标签: java swing constructor progress-bar swingworker