giannibrase Δημοσ. 13 Ιουλίου 2010 Δημοσ. 13 Ιουλίου 2010 Γεια σας αντιμετωπίζω ένα πρόβλημα στην πτυχιακή μου και χρειάζομαι βοήθεια... Στην ουσία έχω ένα applet με κουμπιά, πατώντας ένα κουμπί τρέχω έναν αλγόριθμο από μια κλάση Χ,η οποία ζωγραφίζει πάνω στο applet,σταματάει για λίγο (Thread.sleep( ) ), και μετά συνεχίζει ο αλγόριθμος,ξανασταματάει κτλ... Θέλω τώρα,την ώρα που σταματάει και κάνει sleep o αλγόριθμος,εγώ πατώντας ένα άλλο κουμπί πάνω στο applet να κάνω "Pause" τον αλγόριθμο και όποτε ξαναπατήσω να συνεχίσει... Αυτό που παρατηρώ,είναι ότι όταν τρέχει ο Χ το applet μου κοκκαλώνει,δεν πατιέται κανένα κουμπί ούτε κάτι άλλο διαδραστικό που έχω πάνω στο applet μου... Η Χ επεκτείνει τη διασύνδεση Runnable, και ο κώδικας που κάνει την δουλειά είναι μέσα στη run()... Δοκίμασα επίσης και wait(),και πατώντας το κουμπί Pause να γίνεται notify(),αλλά όπως έιπα,την ώρα που τρέχει ο Χ δεν πατιέται τίποτα στο applet μου. Ευχαριστώ
giannibrase Δημοσ. 13 Ιουλίου 2010 Μέλος Δημοσ. 13 Ιουλίου 2010 όχι,δε δουλεύω με swing ... Όλα είναι awt στο applet μου. Θα προτιμούσα να το κάνω με νήματα πάντως, αφού μου το ζήτησε και ο καθηγητής....
RubiksCube Δημοσ. 13 Ιουλίου 2010 Δημοσ. 13 Ιουλίου 2010 Το ότι ο αλγόριθμος βρίσκεται μέσα στην run() μιας κλάσης που κάνει implement την Runnable δεν λέει τίποτα. Μέσα στον κώδικά σου καλείς ποτέ το εξής? X x = new X(); Thread thread = new Thread(x); thread.start(); όπου Χ κάνει implement το Runnable ή πιο σύντομα new Thread(new X()).start(); Μόνο έτσι ξεκινάς νέο thread ώστε να μην κρεμάει το gui.
pinball_elf Δημοσ. 14 Ιουλίου 2010 Δημοσ. 14 Ιουλίου 2010 Πρόταση: φιάξε ένα thread που να τρέχει το gui, και ένα άλλο thread που να τρέχει τον αλγόριθμο, έτσι ώστε να έιναι ανεξάρτητα.
RubiksCube Δημοσ. 14 Ιουλίου 2010 Δημοσ. 14 Ιουλίου 2010 Πρόταση: φιάξε ένα thread που να τρέχει το gui, και ένα άλλο thread που να τρέχει τον αλγόριθμο, έτσι ώστε να έιναι ανεξάρτητα. Αυτό του είπα και εγώ παραπάνω. Όταν κάνεις κλικ ένα κουμπί ο handler τρέχει στο ίδιο thread με το gui. Οπότε μέσα στον handler πρέπει να ξεκινήσει νέο thread.
pinball_elf Δημοσ. 14 Ιουλίου 2010 Δημοσ. 14 Ιουλίου 2010 Αυτό του είπα και εγώ παραπάνω. Όταν κάνεις κλικ ένα κουμπί ο handler τρέχει στο ίδιο thread με το gui. Οπότε μέσα στον handler πρέπει να ξεκινήσει νέο thread. Όχι ακριβώς το ίδιο: Εγω εννοώ να φτιαχτούν απο την αρχή δυο thread. Όχι οτι η δική μου λύση έιναι καλύτερη, απλά έχει διαφορετικό σχεδιασμό στην υλοποίηση.
giannibrase Δημοσ. 20 Ιουλίου 2010 Μέλος Δημοσ. 20 Ιουλίου 2010 ευχαριστώ πολύ,το υλοποίησα τελικά όπος το είπε ο RubicsCube... να 'στε καλά
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.