(Ignore following sentence - I was being dumb). I have a feeling that I am calling the updates to my jProgressBar on the EDT (which I know is wrong).
@Action
public Task launchScenario() {
return new LaunchScenarioTask(getApplication());
}
private class LaunchScenarioTask extends org.jdesktop.application.Task<Object, Void> {
LaunchScenarioTask(org.jdesktop.application.Application app) {
super(app);
launchTestCaseButton.setEnabled(false);
progressBar.setIndeterminate(false);
statusPanel.validate();
statusPanel.repaint();
totalTests = scenarioRepeat * selectedSSIDS.length;
setProgress(0);
}
@Override
protected Object doInBackground() {
currentScenario = 1;
progressBar.setMaximum(totalTests);
progressBar.setMinimum(0);
try {
Thread.sleep((long) 500);
} catch (InterruptedException ignore) {
}
int ssidsToTest = selectedSSIDS.length;
//For every SSID, we iterate through and create an autoconnector object
for (int counter = 0; counter < ssidsToTest; counter++) {
try {
setMessage("Preparing " + selectedSSIDS[counter] + " test case...");
Thread.sleep((long) 2000);
} catch (InterruptedException ignore) {
}
setMessage("Launching ");
AutoConnector ac = new AutoConnector(selectedSSIDS[counter]);
for (int i = 0; i < scenarioRepeat; i++) {
if (ac.connected()) {
setMessage("Running test " + currentScenario + "/" + totalTests);
currentScenario++;
passedTests++;
} else {
currentScenario++;
failedTests++;
}
System.out.println("setting progress");
setProgress((currentScenario / totalTests) * 100);
progressBar.setString((currentScenario / totalTests) * 100 + "% complete");
}
}
try {
Thread.sleep((long) 500);
} catch (InterruptedException ignore) {
}
return null; // return your result
}
@Override
protected void succeeded(Object result) {
launchTestCaseButton.setEnabled(true);
setMessage("Complete. " + passedTests + " tests passed and "
+ failedTests + " tests failed.");
}
}
I know for a fact (and feel a bit bad) that I'm calling the updates (setProgress()
and setMessage()
in the doInBackground()
method, and I have a sneaking suspicious that I should not be. <<
So the question is, where should I place the setProgress()
snippets in the code? Would this require me creating a task with the AutoConnector
class and seeing if I can update the jProgressBar from there?
I have used jProgressBars before, but not in this manner with NetBeans.