Hirdetés
- mefistofeles: Az elhízás nem akaratgyengeség!
- Klaus Duran: RCS
- sziku69: Fűzzük össze a szavakat :)
- A szovjet és orosz űrhajózás múltja XXIV. rész
- Elektromos rásegítésű kerékpárok
- Luck Dragon: Asszociációs játék. :)
- MasterDeeJay: Mi ez a pici videókártya? AMD E9173 teszt
- gban: Ingyen kellene, de tegnapra
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Ú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?:))
- One mobilszolgáltatások
- One otthoni szolgáltatások (TV, internet, telefon)
- Apple MacBook
- Microsoft Office és Office 365 topic
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Sorozatok
- The Division 2 (PC, XO, PS4)
- Samsung Galaxy S22 Ultra - na, kinél van toll?
- Windows 10
- mefistofeles: Az elhízás nem akaratgyengeség!
- További aktív témák...
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
- HIBÁTLAN iPhone 14 Plus 128GB Midnight-1 ÉV GARANCIA - Kártyafüggetlen, MS4472
- GYÖNYÖRŰ iPhone 11 Pro 64GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3565
- BESZÁMÍTÁS! Asus ROG Z790 i9 13900K 32GB DDR5 1TB SSD RX 7900 XTX 24GB Lian LI LANCOOL 207 ROG 750W
- Bomba ár! HP ProBook 450 G8 - i5-1135G7 I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Gar
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


