obteniendo el evento cancel de Java ProgressMonitor
Tengo un ProgressMonitorpm
y un SwingWorkersw
. Quiero cancelar el SwingWorker cuando presiono la teclacancel
-botón enpm
. Creo que esto no debería ser demasiado difícil, y leí algunos tutoriales sobre SwingWorker y ProgressMonitor, pero no puedo hacer que esto funcione.
final ProgressMonitor pm = new ProgressMonitor(frame, "checking", "...", 0, 100);
final SwingWorker sw = new SwingWorker()
{
protected Object doInBackground() throws Exception
{
doSomethingAndUpdateProgress();
}
};
sw.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
if(evt.getPropertyName().equals("progress"))
{
updateProgress();
}
if(pm.isCanceled())
{
cancelAction();
}
if(pm.isDone())
{
doneAction();
}
}
});
sw.execute();
La actualización del progreso está funcionando bien, peropm.isCanceled()
es nuncatrue
. Supongo que necesito un propertyChangeListener para ProgressMonitor, pero no sé cómo agregaría uno allí.