Tengo un ProgressMonitor pm
y un SwingWorker sw
. Quiero cancelar SwingWorker cuando presiono el botón cancel
en pm
. Supongo que esto no debería ser demasiado difícil, y leí algunos tutoriales sobre SwingWorker y ProgressMonitor, pero no puedo hacer que esto funcione.obteniendo el evento cancelar de Java ProgressMonitor
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();
actualización Progreso está trabajando muy bien, pero no es pm.isCanceled()
true
. Supongo que necesito un PropertyChangeListener para ProgressMonitor, pero no sé cómo agregaría uno allí.
respuesta de Acabase mKorbel era muy informativo carecía del ProgressMonitor sobre el que realmente estaba preguntando, así que elegí esta como la respuesta. – AntiZamba