HdkiLLeR Δημοσ. 21 Μαΐου 2003 Δημοσ. 21 Μαΐου 2003 Re pedes thelw na kanw to exis poly aplo se Java... Mesa se mia sinartisi na kanw mia pausi gia merika deuterolepta.Px exw ena for() kai i teleutaia edoli toy thelw na einai perimene 1sec h telos padon na to rithmisw egw to poso tha perimenei.Dokimasa tin methodo wait() ...alla den karpoforise...kamia idea? Euxaristw ek twn proterwn
HdkiLLeR Δημοσ. 21 Μαΐου 2003 Μέλος Δημοσ. 21 Μαΐου 2003 File girioni katarxas s'euxaristw gia to endiaferon sou. To provlima mou einai to exis.Xrisimopoiw se mia sinartisi 20 fores tin repaint();.Se kathe klisi tis zografizei oti eixe pio prin + kati parapanw.Egw auto pou thelw einai to exeis metaxy twn klisewn tin repaint() na iparxei ena delay etsi wste na prolavenei na vlepei o xrisitis ta ediamesa stadia giati etsi opos ginode twra vlepei to arxiko kai to teliko.Dokimasa to sleep() ma auto pou kanei einai na kathisteri metaxi sinolika px 5sec kai meta moy xanapetaei to teliko apotelesma.Thelw ena eidos animation diladi.
Γηρυόνης Δημοσ. 21 Μαΐου 2003 Δημοσ. 21 Μαΐου 2003 Που χρησιμοποιείς τη Thread.sleep(); Όλα τα καλέσματα στο γράφημα που θέλεις να κινήσεις πρέπει να γίνονται από την event-dispatching thread και όχι από την κυρίως thread. Βάλε την καθυστέρηση μέσα στη repaint() ή προσπάθησε να καλέσεις την update(). Ρίξε μία ματιά και εδώ http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html http://java.sun.com/products/jfc/tsc/articles/threads/threads3.html Αν ακόμα έχεις προβλήματα τότε καταχώρησε ένα μικρό compilable τμήμα του κώδικά σου για να το δοκιμάσουμε.
HdkiLLeR Δημοσ. 21 Μαΐου 2003 Μέλος Δημοσ. 21 Μαΐου 2003 Loipon to olo project einai ena animation gia enan algorithmo.Exw dimiourgisei merikes domes poy xrisimopoioude gia tin anaparastasi enos grafimatos i gia tin ilopoiisi mias ouras proteraiotitas klp.O algorithmos dinetai parakatw.Se sigekrimena simeia allazw mia metavliti i opoia exei ws apotelesma i paint() na zografizei kane ena drawString() se kapia simieia.Kathe fora poy kalw tin repaint() thelw na iaprxei ena delay ekei anamesa etsi wste o xristis na vlepei to apotelesma tis kathe sxediasis.Dokimasa meta apo kathe repaint na valw to Thread.sleep() alla tpt,ta idia kai otan to topothetisa mesa stin paint() san telautaia edoli. > public void Dijkstra(Graph g, int pos) { line=2; repaint(); dijQueue queue=new dijQueue(); for(int i=0; i<graph.getNodesCount(); i++) { line=3; repaint(); line=5; repaint(); line=6; repaint(); } line=8; repaint(); g.getNode(pos).setDistance(0); line=9; repaint(); g.getNode(pos).setNodeColor(Color.red); queue.insert(g.getNode(pos)); line=10; repaint(); while(!queue.isEmpty()) { line=12; repaint(); Node temp=queue.deletemin(); temp.setNodeColor(Color.red); line=13; repaint(); for(int i=0; i<temp.getEdgeCount(); i++) { line=15; repaint(); if (temp.getEdge(i).getLast().getDistance() >temp.getDistance()+ temp.getEdge(i).getWeight()) { line=17; repaint(); temp.getEdge(i).getLast().setDistance(temp.getDistance()+ temp.getEdge(i).getWeight()); line=18; repaint(); temp.getEdge(i).getLast().setPrevious(temp); line=19; repaint(); queue.insert(temp.getEdge(i).getLast()); } } } line=-1; repaint(); }
apoc Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 Οταν φιαξεις την ολη κατασκευη ....φιαξε ενα καινουργιο Τhread το οποιο θα αναλαβει να κανει τις παραπανω Ζωγραφιες. πχ ενα Djksta Class Που θα κανει ειτε Implement to Interface runnable ειτε extend την Thread.class Η Ζωγραφικη θα γινεi με στην μεθορο ( run() ) και μπορεις να λες στο thread να κοιμηθει..οταν θες να περιμενεις!
HdkiLLeR Δημοσ. 22 Μαΐου 2003 Μέλος Δημοσ. 22 Μαΐου 2003 Loipon i taxi einai i SSSP i opooia kanei extend tin JFrame.Mesa se autin iparxoun oi dilwseis oi methodoi xeirismou twn events klp.Auto poy enoeis einai mia alli taxi i opoia kanei extend tin Thread kai mesa ekei na valw tin main kai na dimiourgisw ena instance tis SSSP klp,den to katalava kala sory apoc alla me Threads den exw asxolithei kai para poly
apoc Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 ενα τροπος ειναι ..οταν θα λαμβανεις αυτα τα εvent για να καναεις κατι..τοτε αντι να καλεις μια method της κλασης SSSP να εχεις ορισει μια αλλη κλαση η οποια σωστα ειπε θα κανει extend την Thread και θα κανει τις συγκεκριμενς ζωγραφιες στο panel της JFrame. Αν αναρωτιεσαι μα πως θα περασω το frame η το Panel..μπορεις να τα περασεις ως παραμετρους επισης μπορει αυτο το thread class (object) να ειναι ενα private member της κλασης SSSP.
HdkiLLeR Δημοσ. 22 Μαΐου 2003 Μέλος Δημοσ. 22 Μαΐου 2003 Ti na pw re pedia to pio aplo pragma thelw na kanw ena skato delay kai mou exei vgalei tin panagia.Dokimasa na katafigw kai stin xrisi toy System.in.read() etsi wste na to anagasw na stamataei alla pali tpt ston parapanw kwdika meta apo kathe repaint() to gemisa me System.in.read() alla adi na ektelei mia repaint() meta na perimenei na pataw ena pliktro meta na ektelei tin epomeni repaint klp den ektelei kamia repaint() mexri na patisw px 20fores enter kai mou kanei mono to teleutaio repaint().Ti ginete edw pera?
Γηρυόνης Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 Δηλαδή με λίγα λόγια αυτό που βλέπεις είναι μόνο το πρώτο και το τελευταίο repaint();
HdkiLLeR Δημοσ. 22 Μαΐου 2003 Μέλος Δημοσ. 22 Μαΐου 2003 Akrivws...to sleep() to kanei alla ta kanei ola mazi mezemena.Px ean exw valei 10 sleep(1000); tha pagwnei gia 10sec peripoy kai stin sinexeia tha mou emfanisei to teleutaio apotelesma.To idio ginete opos eipa kai parapanw vazodas kai tin System.in.read() adi na patisw ena pliktro(px enter) na kanei to prwto repaint meta to deutero klp..Pagwbei mexri na patisw 10 fores ena pliktro kai mou emfanizei to telautaio apotelesma.Vasika ean kapios thelei den exw prob na tou steilw olo to source me ena mail i pm na to koitaxei kai na protinei kapia lisi sto thema. To paradoxo einai oti ean valw px: > public class delay { public static void main(String args[]) { for(int i=1; i<=10; i++) { System.out.println(i); Thread.sleep(1000); } } } ilopoieitai mia xara i dikopi.Vasika ap'oti exw katalavei kati pezei me tin repaint(),gia kai breakpoints na valw ta idia pali kanei stamataei se ena bp kai i efarmogi pagwnei.
apoc Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 postare ολο το source..η βαλτο σε ena zip attach να δουμε τι παιζει!
apoc Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 χωρις να ειμαι 100% σιγουρος δοκιμασε αυτο σε παρακαλώ > public void repaint(long tm) Repaints the component. This will result in a call to update within tm milliseconds. Parameters: tm - maximum time in milliseconds before update Since: JDK1.0
Γηρυόνης Δημοσ. 22 Μαΐου 2003 Δημοσ. 22 Μαΐου 2003 Χεχε HdkiLLeR αυτό είναι κλασσικό πρόβλημα, δεν έχει να κάνει με delays και λοιπά απλώς πιστεύω ότι έχεις ξεχάσει κάποιο κάλεσμα στην update. Δοκίμασε αυτό που σου λέει ο άποκ και αν ακόμα δε δουλεύει στείλε των κώδικα με προσωπικό μήνυμα. Κοίτα και εδώ: http://www.ryerson.ca/~dgrimsha/courses/cps840/repaint.html
HdkiLLeR Δημοσ. 23 Μαΐου 2003 Μέλος Δημοσ. 23 Μαΐου 2003 Katarxas tha ithela na euxaristisw tous filous apoc kai girioni gia tin politimi voithia kai xrono toys pou afierwsan.To provlima telika lithike me to link poy edwse i filos girionis.To provlima itan oti otan iparxei loop i polles kliseis stin repaint() exetias toy schedulling ginode oles mazi combined se mia.Telika ena Thread.sleep() stin paint() kai adikatastasi twn klisewn tis repaint() me update() elise to provlima(gia tin akriveia vgike pio kalo ap'oti perimena kai egw o idios!!) <img src="http://www.insomnia.gr/ubbthreads/images/graemlins/wink.gif" alt="" />
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.