Hirdetés
Új hozzászólás Aktív témák
-
Karma
félisten
Huh, erős kód. Meg egy kicsit erjedt is. Ha már egyszer a progressbar értékét is másik szálból közvetlenül babrálod a setValue-val, miért nem hívod meg a dialógus setVisible-jét amikor vége?
Félreértéseket elkerülendő, ez így nagyon-nagyon nem jó megoldás, de legalább begipszelnéd a lyukat

A probléma ugyanis az, hogy a Swing (meg úgy egyébként a legtöbb UI framework) nem szereti azt, ha a UI szálon kívül (itt event dispatcher threadnek hívják) bármit módosítasz. Jobb helyeken egy hatalmas exceptiont kapsz a nyakadba, itt úgy tűnik nem.
A dialógus elindítása még rendben van, a másik szálból nem szabadna közvetlenül hívogatni a setValue-t.
Fontos megjegyezni, mert ahogy látom itt félreértés van: az új szál indításával a vezérlés két, párhuzamosan futó részre szakadt. Ez a mondatod: A kérdés, ha végzett a run() metódus, hogyan tudom ezt a szálat leállítani és visszaadni a másiknak a vezérlést." értelmetlen, az indító dialógusos kód nem vesztette el a szálát, egyszerűen visszatért az eseményekre várakozó állapotba. Ezt végzi is, csak a modális dialógus miatt nem törődik máshova irányuló kattintásokkal és billentyűleütésekkel.
Magára a problémára visszatérve, egy kicsit szerteágazik a megoldás, mert olyan alap dolgokkal kellene tisztában lenned, mint a UI (dialógus, progressbar helyzete) elválasztása az üzleti logikától (fájlmásolás száz bájtonként). Kéne egy rendes Listener interfész, amit a másoló hívogat (ezen keresztül jelentve a százalékos állást, számként), és a programGUI-d implementálja.
Ehhez az implementációhoz meg a SwingUtilities.InvokeLater-t kéne használnod, hogy a dispatcher szálon fusson le a tényleges progress bar frissítés, meg a dialógus elrejtése.
Így nem függene a másolód attól, hogy a UI-on milyen komponensek vannak és hogy hívják őket, csak a dolgát végezné

Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- nVIDIA GeForce GT240M 1024MB laptop videókártya
- minigép/ i5 6500/ 16GB DDR4/ 256GB SSD/ HP800G3 35W/ számla/ garancia
- iKing.Hu - Apple MacBook Pro 14 M3 Pro (2023) 18GB/500GB SSD karcmentes 100% akku 23 ciklus
- iKing.Hu - Apple MacBook Pro 14 M1 Pro (2021) 16GB/500GB szép állapot 90% akku 265 ciklus
- AMD Ryzen 9 9950X3D2 4.30GHz
- Azonnali készpénzes Intel i5 i7 i9 8xxx 9xxx processzor felvásárlás személyesen / csomagküldés
- Samsung, SK Hynix 8GB / 16GB / 32GB DDR5 laptop Memoria!
- Dell Latitude 5580,15.6",FHD,i5-6300U,8GB DDR4,256GB SSD,WIN11
- Apple iPhone 17 Pro Max 512GB Bontatlan Független Összes Szín / 27% áfás ár
- ÚJ Dell Pro 16 Plus - 16" WUXGA IPS - Ultra 5 235U - 16GB - 512GB - Win11 PRO - 3 év garancia - HUN
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



