Socket bloquant les mises à jour graphiques
Résolu
TheKill_TnT
Messages postés
172
Statut
Membre
-
TheKill_TnT Messages postés 172 Statut Membre -
TheKill_TnT Messages postés 172 Statut Membre -
Bonjour, sur un programme java je me connecte à un serveur et je lui envoie des données, j'en demande...
Mais j'ai un problème: durant la connexion au serveur, la partie graphique est littéralement mise en attente. Même thread, même méthode, même classe...
Si quelqu'un sait d'où celà peut provenir et quel moyens employer pour empêcher ça je remercie !
Mais j'ai un problème: durant la connexion au serveur, la partie graphique est littéralement mise en attente. Même thread, même méthode, même classe...
// Socket connecté... //Echanges de données... /*JProgressBar*/ progress.setValue(x); // La valeure ne change pas à l'écran //Suite... // Connexion interrompue // La barre de progression avance comme on lui avait demandé plus tôt
Si quelqu'un sait d'où celà peut provenir et quel moyens employer pour empêcher ça je remercie !
A voir également:
- Socket bloquant les mises à jour graphiques
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise à jour libre office - Accueil - Bureautique
- Vous n'avez pas installer certaines mises à jour de sécurité importantes sur votre appareil - Guide
3 réponses
Bonjour,
Tu fait ton action au sein d'un ActionListener, MouseListener, ou autre Listener ?
Dans ce cas c'est normal, le programme attends que l'action soit terminé avant d'afficher le résultat.
Il fuadrait plutôt utiliser les SwingWorker :
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
Tu fait ton action au sein d'un ActionListener, MouseListener, ou autre Listener ?
Dans ce cas c'est normal, le programme attends que l'action soit terminé avant d'afficher le résultat.
Il fuadrait plutôt utiliser les SwingWorker :
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
C'est à dire:
// Initialisation de la scene: // quand l'ActionListener "Multijoueur" // est actionné, on va dans cette classe // qui hérite de GuiMenu, méthode init // abstraite, et on lui invoque init() // (à cette classe) et elle déssine // la fenêtre (progress bar, label) // puis on lance un nouveau Thread // (new Thread(){...}.start(); qui va // tenter une connexion au serveur // par Socket et envoyer/recevoir // des données mais tant que le // socket est connecté, tout les // changements effectués dans // le JProgressBar ou le JLabel // sont ignorés jusqu'à la déconnexion // du socket.Le code des sockets se trouve donc dans la même méthode, même classe, même thread comme dit plus haut.
Même après tentative de lancement avec SwingWorker, la partie graphique est mise en attente.