Problème d'ouverture de la seconde fenetre graphique [Résolu]

Signaler
Messages postés
8
Date d'inscription
samedi 31 août 2002
Statut
Membre
Dernière intervention
24 novembre 2011
-
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
Bonjonr,

je suis actuellement entrain de me remettre à la programmation et plus précisement le java, j'ai donc commencé un nouveau projet à savoir un petit client telnet.

Celui ci se compose de 2 fenetres, 1 pour la gestion des connections (et plus tard des config), l'autre une console pour emettre et recevoir des messages sur un serveur. Chacune des fenetres fonctionne parfaitement si elle sont lancé séparément, en revanche si je lance le programme normalement, à savoir la fenetre de connection qui fait appel à la console la ça coince !

liste des problemes :

le bouton connection reste enclenché sur la premiere fenetre
la deuxieme fenetre s'initialise uniquement avec la taille et le titre défini
je perd tout controle sur chacune des fenetres


si quelqu'un à une idée du problème ?
Merci d'avance pour l'aide.

5 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
260
Le soucis vient certainement des Thread, à un moment, dans tes consoles, tu dois avoir un while(true){faire un truc} pour intercepter les commandes. Et c'est là que ca bloque si tu n'utilises qu'un thread.

Un petit exemple :

public class Console1 extends Thread {

@Override
public void run(){
while(true){
System.out.println("console1");
}
}

}

public class Console2 extends Thread {

@Override
public void run(){
new Console1().run();
//new Console1().start();
while(true){
System.out.println("console2");
}
}

}


et dans une main :

new Console2().run();

et là, tu vas voir, tu n'auras que des console1 qui vont s'afficher.
Alors que si tu remplaces le new Console1().run(); par new Console1().start(), console1 et console2 vont s'afficher
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
260
Bonjour,

"le bouton connection reste enclenché" Est ce que c'est un JToogleButton ? Si non, c'est que tu as ouvers une nouvelle fenêtre dans le Thread courant.

Je dirais que le problème que tu as est une mauvaise gestion des Threads. Sais tu ce que c'est ? Ouvres tu de nouveaux threads avec la méthode start ?
Messages postés
8
Date d'inscription
samedi 31 août 2002
Statut
Membre
Dernière intervention
24 novembre 2011

Salut,

non le bouton est un simple Jbuton, je pense donc que c'est un problème de thread, en effet je ne sais pas exactement a quoi correspond un threads.

par contre j'ai essayé de lancé la deuxieme fenetre comme un nouvel objet, de façon à eviter d'utiliser les memes ressources, mais il semblerait que ce ne soit pas le cas.

je vais essayer de me renseigner sur les thread merci pour la piste :)
Messages postés
8
Date d'inscription
samedi 31 août 2002
Statut
Membre
Dernière intervention
24 novembre 2011

Merci je vois à peu pres le truc tu lance la console2 par sa methode qui elle lancera la console1 avec le start (certainement une méthode hérité du thread), je vois bien le principe je vais continuer à étudier ça, de façon à pouvoir l'implémenter correctement dans mon code.

Mais la solution correspond parfaitement au type de problème que c'etait :)
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
260
Oui, c'est ca, la méthode start est une méthode hérité de Thread et appelle la méthode run() dans un nouveau thread. (Un thread est à peu près équivalent à un processus sauf que deux threads partagent le même espace d'adressage)

Si tu appelles la méthode run(), tu restes dans le thread courant donc tant que ta boucle while n'est pas terminée, tu n'effectue pas le reste du code.