Hallo,
ich habe ein Problem mit meinen Swingworkern und meiner Java GUI. Ich habe eine GUI geschrieben zum Suchen und Durchsuchen von Dateien. Damit die GUI richtig funktioniert und es zu keinen Freezes kommt, verwende ich Swingworker. Hier ein Beispiel:
Jetzt habe ich einen Button integriert der den Prozess abbrechen soll, also den Swingworker beenden. Hier rufe ich den Befehl "workerSearchFile.cancel(true);" auf, dieser Zeigt aber keinerlei Wirkung. Die Suche läuft knadenlos weiter. Hat Jemand eine Idee was hier schief läuft?
Danke
Andy
ich habe ein Problem mit meinen Swingworkern und meiner Java GUI. Ich habe eine GUI geschrieben zum Suchen und Durchsuchen von Dateien. Damit die GUI richtig funktioniert und es zu keinen Freezes kommt, verwende ich Swingworker. Hier ein Beispiel:
Java:
buttonSearchFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.out.println("buttonSearchFile.actionPerformed, event="+evt); //$NON-NLS-1$
// shows pop up if no source path is selected
if (txtSourceFolder.getText().equals("")) //$NON-NLS-1$
{
keepWindow = true;
JOptionPane.showConfirmDialog(null,
CLanguage.getString("GFileFinder.66") //$NON-NLS-1$
+ labelSourceFolder.getText() + CLanguage.getString("GFileFinder.67"), CLanguage.getString("GFileFinder.68"), //$NON-NLS-1$ //$NON-NLS-2$
JOptionPane.CLOSED_OPTION, JOptionPane.ERROR_MESSAGE);
keepWindow = false;
}
else
{
// Sets the button status of all buttons in the button panel
setButtonStatusProzessing();
// calls the search method
SwingUtilities.invokeLater(workerSearchFile = new SwingWorker<Boolean, Void>()
{
@Override
protected Boolean doInBackground()
{
keepWindow = true;
searchFiles(); // Calls method for searching files
keepWindow = false;
return true;
}
@Override
protected void done()
{
cancelSwingworker();
keepWindow = false;
}
});
// Executes the SwingWorker; the GUI will not freeze
workerSearchFile.execute();
}
}
});
Jetzt habe ich einen Button integriert der den Prozess abbrechen soll, also den Swingworker beenden. Hier rufe ich den Befehl "workerSearchFile.cancel(true);" auf, dieser Zeigt aber keinerlei Wirkung. Die Suche läuft knadenlos weiter. Hat Jemand eine Idee was hier schief läuft?
Danke
Andy