Ú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?:))
- BestBuy ruhás topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Futás, futópályák
- Apple iPhone 17e – mágnesek ereje
- Nagyon is lát fantáziát a Socket AM4-ben az ASRock
- Google Pixel topik
- Mobil flották
- Apple asztali gépek
- Kerékpárosok, bringások ide!
- További aktív témák...
- Nintendo Switch Oled + Fólia
- openbox/A++ HP Victus 16" ips 144Hz, R7-6800, 16GB DDR5 / 512 NVMe, RTX3050 Ti, WiFi6 SZLA +GARANCIA
- ThinkPad P15v Gen3 27% 15.6" FHD IPS i7-12800H T1200 32GB 512GB NVMe ujjlolv IR kam gar
- AMD Radeon RX 7800 XT 16 GB (21330-01-20G)
- Bontatlan MacBook Air 13" M4 Magyar 2025 éjfekete színben, 2 év garanciával eladó!
- HIBÁTLAN iPhone 15 Pro 128GB Blue Titanium-1 ÉV GARANCIA - Kártyafüggetlen, MS4692, 92% AKKSI
- Új állapotban! Lenovo ThinkPad T14 Gen 3 i5-1245/16gb ram/256 ssd FHD+ garancia
- Új és újszerű 17-18 Gamer, irodai, üzleti készülékek nagyon kedvező alkalmi áron Garanciával!
- LG 28MQ780 - Dual Monitor - Nano IPS - 2560x2880 - HDR10 - USB Type-C - AMD FreeSync - MacBook Ready
- 265 - Lenovo ThinkBook 16 (G6 ABP) - AMD Ryzen 5 7530U, no GPU
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



