Προς το περιεχόμενο

Java && delay


HdkiLLeR

Προτεινόμενες αναρτήσεις

Δημοσ.

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

Δημοσ.

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.

Δημοσ.

Που χρησιμοποιείς τη 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 τμήμα του κώδικά σου για να το δοκιμάσουμε.

Δημοσ.

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();
     } 

Δημοσ.

Οταν φιαξεις την ολη κατασκευη ....φιαξε ενα καινουργιο Τhread το οποιο θα αναλαβει να κανει τις παραπανω Ζωγραφιες.

πχ ενα Djksta Class Που θα κανει ειτε Implement to Interface runnable ειτε extend την Thread.class

Η Ζωγραφικη θα γινεi με στην μεθορο ( run() ) και μπορεις να λες στο thread να κοιμηθει..οταν θες να περιμενεις!

 

Δημοσ.

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

Δημοσ.

ενα τροπος ειναι ..οταν θα λαμβανεις αυτα τα εvent για να καναεις κατι..τοτε αντι να καλεις μια method της κλασης SSSP να εχεις ορισει μια αλλη κλαση η οποια σωστα ειπε θα κανει extend την Thread και θα κανει τις συγκεκριμενς ζωγραφιες στο panel της JFrame. Αν αναρωτιεσαι μα πως θα περασω το frame η το Panel..μπορεις να τα περασεις ως παραμετρους επισης μπορει αυτο το thread class (object) να ειναι ενα private member της κλασης SSSP.

 

Δημοσ.

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?

Δημοσ.

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.

Δημοσ.

χωρις να ειμαι 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

Δημοσ.

Χεχε HdkiLLeR αυτό είναι κλασσικό πρόβλημα, δεν έχει να κάνει με delays και λοιπά απλώς πιστεύω ότι έχεις ξεχάσει κάποιο κάλεσμα στην update. Δοκίμασε αυτό που σου λέει ο άποκ και αν ακόμα δε δουλεύει στείλε των κώδικα με προσωπικό μήνυμα.

 

Κοίτα και εδώ: http://www.ryerson.ca/~dgrimsha/courses/cps840/repaint.html

Δημοσ.

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="" />

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...