Hirdetés
- Yettel topik
- Apple iPhone 17 Pro Max – fennsík
- Amazfit Bip 6 - jót olcsón
- iPhone topik
- OnePlus 15 - van plusz energia
- Amazfit T-Rex 3 Pro – világítós dínó
- Nothing Phone (1) - nem semmi (2)
- Apple iPhone 13 mini - miért nem veszik elegen?
- Milyen okostelefont vegyek?
- Visszatérnek a Samsung tervezte CPU-magok és GPU az Exynos 2800-ban?
Új hozzászólás Aktív témák
-
Frigo
őstag
SwingWorker lesz ami neked kell. Itt egy példa Progressbar-ral
-
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é

-
Davs
tag
Java concurrency . Az elso link jonak tunik, az a hivatalos dokumentacio (ha jo angolul)
Amugy minden GUI-nal ugy van, hogy azon a szalon, ahol a JFrameket stb- t csinalod nem szabad komolyabb, sokaig tarto dolgokat csinalni, mert az igy leblokkolja a GUI-t (ami igy nem tudja ellenorizni, hogy tortent-e uj Event -billentyulenyomas, egerklikk, progressbar changge- stb.
-
Karma
félisten
Egyszerű, az átlátszó ablak miatt adnia kéne magát. A probléma az, hogy a UI szálban végzel blokkoló IO műveletet, ezért amíg a másolás tart, nem tudja frissíteni a frame-et.
A legegyszerűbb, Java 6 és előtti megoldáshoz külön szálat kéne indítanod, amiben ezt a másolást végzed, és periodikusan visszajelzel a progressről a UI szálnak - ami frissíti a progressbart.
Java 7 alatt már van AsynchronousFileChannel ilyesmihez, de nem ismerem (hatosnál leragadtam).
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Yettel topik
- Battlefield 6
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Okos Otthon / Smart Home
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- gban: Ingyen kellene, de tegnapra
- Kormányok / autós szimulátorok topikja
- Autós topik
- Lítium-ion/Li-ion akkumulátorok
- További aktív témák...
- IPhone 12 Pro 128GB gyári független Silver új akku
- Apple watch Series 9 45mm stainless steel bontatlan! 1 év Apple jótállás
- Apple watch Series 10 46mm cellular jet black bontatlan 1 év Apple JÓTÁLLÁS AKCIÓ!
- Szép állapotú iPad Pro M1 256GB wifi + cellular. Kijelző karcmentes. Kamera résznél mintha lenne egy
- G.SKILL Trident Z RGB 64GB (2x32GB) DDR5 6000MHz CL30 - XMP - 99 hó garancia
- 35" ASUS ROG Swift PG35VQ curved GAMER monitor
- Samsung Galaxy Z Flip 5 512GB,Újszerű,Adatkabel,12 hónap garanciával
- LG 27UL550-W - 27" IPS / 3840x2160 4K / 60Hz 5ms / HDR10 / AMD FreeSync
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- BESZÁMÍTÁS! Dell Latitude 3530 üzleti notebook - i5 1235U 8GB DDR4 512GB SSD Intel Iris Xe WIN11
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest




