Hirdetés
- Xiaomi 17 Ultra - jó az optikája
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- iPhone topik
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Samsung Galaxy Watch8 - Classic - Ultra 2025
- Jolla és SailfishOS tapasztalatcsere
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Európába tart a Xiaomi Watch 5, eSIM-es verzió is jöhet
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- MWC 2026: csápolt a robot, majd dobott egy hátraszaltót
Ú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?:))
- Új! WHITE 4K GAMER PC! AMD RYZEN 7 7800X3D / RX 9070XT 16GB / 32GB 6000Mhz / 1TB Nvme / 750W GOLD
- Gamer Pc jó áron! RTX 4060/16GB Ram/1TB SSD/R5 5500
- Budget Gamer pc jó áron! 1660 Super/i5-9400F/16GB RAM
- Lenovo ThinkPad L590 FullHD 1080p IPS - i5-8265U, 8GB DDR4, 256GB NVMe SSD, Windows 11 Pro
- Aztech Webshop Modern és retro számítástechnika egy helyen Nyitás: Március 8. 12:00
- Használt Apple A1243 EMC2171 német kiosztású vezetékes billentyűzet / 12 hónap jótállás
- ÁRGARANCIA! Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Asus B250M i3 6100T 8GB DDR4 240GB SSD GTX 1050 Ti 4GB Zalman T3 Plus DeepCool 400W
- Gamer PC-Számítógép! Csere-Beszámítás! I5 9600KF / RTX 3060Ti / 16GB DDR4 / 256SSD + 2TB HDD
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Max 36GB RAM 1TB SSD macbook garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



