BluEDr4g0n Δημοσ. 26 Νοεμβρίου 2013 Δημοσ. 26 Νοεμβρίου 2013 Καλησπέρα! Φτιάχνω μια εφαρμογή που έχει και GUI. Μέσα έχω βάλει ένα κουμπί το οποίο όταν το πατάω καλεί άλλα αντικείμενα τα οποία τα έχω να τρέχουν για πάντα. Το πρόβλημα μου είναι πως αφού πατήσω το κουμπί η εφαρμογή τρέχει και τα πάντα κάνουν την δουλειά τους αλλά το GUI μου παγώνει...αυτό φαντάζομαι γίνετε γιατί έχω βάλει στο κουμπί τη συνάρτηση mouseDown(MouseEvent e) οπού εκεί μέσα καλεί τα άλλα αντικείμενα, επειδή όμως αυτό δεν τελειώνει ποτέ αφού η εφαρμογή μου είναι ατέρμον βρόγχος κολλάει μέσα σε αυτή τη συνάρτηση αναγκαστικά με αποτέλεσμα να κολλάει και το παράθυρο. μήπως έχετε καμία ιδέα για το πώς πρέπει να το κάνω έτσι ώστε να δημιουργείτε το αντικείμενο μου αλλά και να τερματίζει όσο τρέχει η συνάρτηση mouseDown(MouseEvent e)? Σκέφτηκα με Threads να το έκανα αλλά δεν τα έχω δουλέψει ποτέ στην Java.Καμία ιδέα?
georgemarios Δημοσ. 27 Νοεμβρίου 2013 Δημοσ. 27 Νοεμβρίου 2013 Ναι, το GUI παγωνει γιατι τρεχει στο ενα και μοναδικο thread της εφαρμογης και περιμενει να τελειωσουν τα "αλλα πραγματα" που ζητησες να γινουν στο mouseDown για να ξαναπαρει τον ελεγχο. Για να εχεις responsive gui, αυτο θα πρεπει να τρεχει σε ξεχωριστο thread. Οταν πατα ο χρηστης το κουμπι, θα αναθετεις σε ενα worker thread να κανει τα πραγματα που θες και θα επιστρεφεις αμεσως τον ελεγχο στο gui. Εδω εχει ενα ωραιο αρθρο για worker threads. 2
BluEDr4g0n Δημοσ. 27 Νοεμβρίου 2013 Μέλος Δημοσ. 27 Νοεμβρίου 2013 <p>Ναι, το GUI παγωνει γιατι τρεχει στο ενα και μοναδικο thread της εφαρμογης και περιμενει να τελειωσουν τα "αλλα πραγματα" που ζητησες να γινουν στο <span style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">mouseDown για να ξαναπαρει τον ελεγχο.</span></p> <p><span style="color:rgb(40,40,40);font-family:helvetica, arial, sans-serif;">Για να εχεις responsive gui, αυτο θα πρεπει να τρεχει σε ξεχωριστο thread. Οταν πατα ο χρηστης το κουμπι, θα αναθετεις σε ενα worker thread να κανει τα πραγματα που θες και θα επιστρεφεις αμεσως τον ελεγχο στο gui. </span></p> <p><span><a data-ipb='nomediaparse' href='http://www.javacreed.com/swing-worker-example/'>Εδω</a> εχει ενα ωραιο αρθρο για worker threads.</span></p> Έχεις δίκιο απλά σκεπτόμουν Μήπως το αποφύγω αλλά όπως τα λες ακούγονται αρκετά λόγια...μου φαίνετε μονόδρομος! Ευχαριστώ για τις πληροφορίες ;-)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα