Comment résoudre le problème d'une boucle infinie?? [Résolu]

haythemrafa 7 Messages postés mercredi 25 avril 2012Date d'inscription 11 mai 2012 Dernière intervention - 10 mai 2012 à 18:52 - Dernière réponse : haythemrafa 7 Messages postés mercredi 25 avril 2012Date d'inscription 11 mai 2012 Dernière intervention
- 11 mai 2012 à 15:17
Salut ,


J'ai une interface d'accueil dans laquelle quand on clique sur un menuItem on fait apparaître une nouvelle JFrame qui va jouer le rôle d'un serveur

alors le code dans actionPerformed

JMenuItem mntmGrer_1 = new JMenuItem("G\u00E9rer");
mntmGrer_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Ensachage frame = new Ensachage();
frame.setVisible(true);
frame.traitement();

}
});

le code de la méthode traitement

public void traitement(){
try {

ServerSocket ss = new ServerSocket(1200);

while(true){

Socket sc = ss.accept();
MonThread th = new MonThread(sc,list,lblLiv,lblLiv2,lblLiv3,lblLiv4,lblLiv5,lblP,lblP2,lblP3,lblP4,lblP5,lblSL,lblSL2,lblSL3,lblSL4,lblSL5,v5,v,vNum,md,bAjouter,bAjouter2,bAjouter3,bAjouter4,bAjouter5,ftfSac5,ftfSac4,ftfSac3,ftfSac2,ftfSac,bAnnuler,bAnnuler2,bAnnuler3,bAnnuler4,bAnnuler5);
th.start();

}


} catch (IOException e) {
e.printStackTrace();
}
}

Quand La fenêtre s'ouvre rien n'apparaît et tout se bloque et je ne peux cliquer sur rien (je ne peux l'arrêtrer que depuis eclipse)

Je tiens à dire que quand le code situé dans actionPerformed était dans le main() de la classe ensachage tout fonctionnait correctement !!
mais quand j'ai supprimé le main() et j'ai voulu qu'elle aparaît après appel d'une autre JFrame ça ne marchait pas !!
Afficher la suite 

2 réponses

Répondre au sujet
cormandyr 600 Messages postés samedi 20 mai 2006Date d'inscription 8 juillet 2016 Dernière intervention - 11 mai 2012 à 08:09
+3
Utile
normale...

tu lui demande de faire une boucle infinie lors de la construction de ta fenetre...
donc tu cliques sur ton bouton, il commence à construire ta fenetre et donc sa boucle infinie... Il ne sortira jamais de la boucle pour terminer l'actionPerformed...

je te conseillerai si tu veux garder ce system de faire que ta class Ensachage implemente l'interface Runnable.
Ta méthode traitement passe dans la méthode run de l'interface...
et tu fais dans ton actionPerformed:
public void actionPerformed(ActionEvent arg0) {
Ensachage frame = new Ensachage();
frame.setVisible(true);
new Thread(frame).start();


Je n'ai pas testé, mais bon faire une boucle infinie qui lance à chaque fois une thread ne me semble pas une super idée....
mais tu sais mieux que nous ce que tu veux faire...
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cormandyr
haythemrafa 7 Messages postés mercredi 25 avril 2012Date d'inscription 11 mai 2012 Dernière intervention - 11 mai 2012 à 15:17
0
Utile
Merci
J'ai fait comme tu as dit et ça a marché ;)
Commenter la réponse de haythemrafa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.