Przecież Ci Wibowit napisał - chciałeś, żeby klasa wywodząca się ze SwingWorkera
zakończyła działanie - cancel
jest najlepszą informacją dla SwingWorkera
ponieważ isCancelled
jest już wewnętrznie obsługiwany (i synchronizowany) przez tę klasę. Jeżeli natomiast chcesz przekazać cokolwiek co zmieni działanie SwingWorkera
(i w wyniku tego zakończy on pracę), to musisz normalnie dołożyć w nim jakąś metodę i pole ręcznie synchronizowane tak jak w przypadku każdej innej klasy dostępnej z wielu wątków. Tym razem jednak to ty musisz dopilnować czy synchronizacja jest prawidłowa (sądzisz, że zrobisz to lepiej?). Jeżeli masz problem z tym, że obiekt SwingWorkera
nie jest widoczny dla metody internalFrameClosing
, to musisz jego referencję zapisać w jakimś polu dostępnym dla niej lub poprzez jakąś inną metodę, którą może ta pierwsza wywołać.