[Java] Probleme de freeze

Fermé
Nieli Messages postés 83 Date d'inscription dimanche 10 février 2008 Statut Membre Dernière intervention 23 avril 2009 - 11 févr. 2008 à 13:22
 Nieli - 11 févr. 2008 à 23:02
Bonjour,
Voila mon problème,
J'ai une JFrame contenant mon jeu (jeu de go ndlr) avec une JMenuBar je propose le lancement d'un Tchat,
Le principe est que je "try" une connexion à un serveur, si ca génere une IOException, alors avec une JOptionPane, on demande à l'utilisateur si il veut lancer le serveur. (Désolé si cette méthode est dégueulasse).

Le problème est que si je place un main() dans la classe Tchat et que je la lance à part, le serveur.accept() tourne en "background" laissant libre court à toute opération (sur la fenetre de tchat)
Alors que si je lance la fenetre de tchat depuis l'ActionListener de JMenuBar lors du serveur.accept() la fenetre de tchat et la fenetre du Go freeze.
SwingUtilities.invokeLater(new Runnable(){
public void run(){
//On crée une nouvelle instance de notre fenêtre
tchat = new Tchat("127.0.0.1");
}
});

Je voudrais votre avis.

Merci d'avance
A voir également:

3 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 févr. 2008 à 13:42
Tu as une classe principale qui lance tes deux instances ? (le go et le chat)

Si Non, je te conseille de faire comme ca.
Si oui, alors tu pourrais mettre en avant plan la fenetre concernée (ici celle du go) avec le déclenchement de la méthode adéquat de cette instance qui ouvre la pop-up de confirmation de connexion.

Qu'en pense tu ?
0
Nieli Messages postés 83 Date d'inscription dimanche 10 février 2008 Statut Membre Dernière intervention 23 avril 2009 6
11 févr. 2008 à 13:48
D'abord Merci de ta réponse.

Ma classe principale lance seulement la fenetre du Go
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
//On crée une nouvelle instance de notre fenêtre
FenetreGo fenetre = new FenetreGo();
fenetre.setVisible(true);
}
});

La fenetre de Tchat elle est instanciée par la gestion des evenements
public class Evenement implements ActionListener,MouseListener {
if(source.getText()=="Ouvrir")
{
SwingUtilities.invokeLater(new Runnable(){
public void run(){
//On crée une nouvelle instance de notre fenêtre
tchat = new Tchat("127.0.0.1");
}
});
}
}

Je vais essayer de réfléchir à implanter ta méthode d'autre part, mais je doute que l'utilsateur accepte d'avoir une fenetre de tchat qui freeze :s


Merci d'avance.
0
Up. Ca descend vraiment vite :s.
0