Sziasztok!
egy társasjáték lenne a feladat, az a problémám, hogy ahogy fut a program, és megjelenik a GUI, az blokkol. Itt több lehetőséget találtunk ki a kiküszöbölésére, a kérdésem, hogy Szerintetek mi a legjobb megoldás?
valahogy úgy kéne megoldani a dolgot - szerintem - hogy van egy vezérlő osztály, az példányosit egy gui-t, ugy, hogy ne blokkoljon, meg itt hoznám létre - gondolom - azt az osztályt, ami majd hálózaton küldi el a másik játékosnak, hogy mi történik.
Hogyan érdemes ezt megcsinálni?
köszi
- 1423 megtekintés
Hozzászólások
Szia!
Mit értesz az alatt, hogy a GUI blokkol?
- A hozzászóláshoz be kell jelentkezni
Itt találsz egy példát hálózatos chat alkalmazásra, GUI+hálózat, úgyhogy valószínűleg ki tudod hámozni belőle, ami neked kell.
http://fi.inf.elte.hu/~gobi/javagy1.html Alul a chat.
- A hozzászóláshoz be kell jelentkezni
async chat-et néztem. jól sejtem, hogy ez 3 szál?
a main-ben ágaztat el egyet
a socket számára egyet
meg az eredeti
- A hozzászóláshoz be kell jelentkezni
meg a swinges event dispatcher szal, az smafu? :)
tessek olvasni sunos tutorialok
- A hozzászóláshoz be kell jelentkezni
Olvass utána a Java Threadingnek (meg úgy általában a többszálúságnak), aztán berátközz össze a SwingWorker osztállyal
"A fejlesztot azert fizetik, hogy oldja meg a problemat. Ez egy kemeny szakma." - Chain-Q
- A hozzászóláshoz be kell jelentkezni
++1
Minden GUI manipulációs műveletet a GUI event threadjében kell csinálni.
--
The Net is indeed vast and infinite...
http://gablog.eu
- A hozzászóláshoz be kell jelentkezni
csak nem a penteki java zhra gyakorolsz? ;)
- A hozzászóláshoz be kell jelentkezni
nem
- A hozzászóláshoz be kell jelentkezni
Nekem project labornak tunik. Anno nekunk is tarsasjatek volt a feladat.
--
I don't always dress in a T-shirt and jeans. Sometimes people give me awards, and I dress like a penguin instead. - Linus Torvalds
- A hozzászóláshoz be kell jelentkezni
Oké, nagyon az alapok. Event dispatcher szálból time consuming nem GUI-t babráló dolgot ne csinálj, mert akkor blokkolódni fog a grafikus felület. Erre a megoldás egy külön szál indítása, amely a befejeztével rajzol a gui-ra. Csakhogy, gui komponenst csak az event dispatcher szálból használhatsz (label.setText() és társai), különben szép nagy Exception-t kasz.
Tehát a megoldás, hogy csinálsz egy új Runnable-t, és azt bedobod az event dispatcher thread queue-jába. Ezt a SwingUtilities.invokeLater() vagy invokeAndWait() metódusával teheted meg.
tehát nyugodtan csinálj több szálat, csak figyelj a dead lockokra, és a gui komponenseket a fentek szerint bizgeráld.
- A hozzászóláshoz be kell jelentkezni