Bonsoir à tous!
Voilà quelques heures que je bute sur un problème assez énervant:
Je dois créer une fenêtre de connexion pour qu'un serveur attende un hôte. Bien j'ai bien ma JFrame qui me propose diférentes options (pseudo, IP, ...) et puis j'ai 4 boutons:
1 Pour jouer en tant qu'hôte en ayant remplis l'adresse et le port du server distants.
1 Pour Quitter
1 Pour connaitre sa propre adresse IP
1 Pour wait en mode server.
C'est le dernier qui me pose problème.
Je souhaiterais tout d'abord faire apparaitre une fenêtre me marquant: "Wait ..." lorsque je lance jusqu'à ce qu'un client se connecte. pour ensuite la faire disparaitre au moment de jouer. Or j'arrive à la faire apparaitre lors du lancement mais même après connexion du client elle ne disparait pas:
Extrait de ma JFrame du menu correspondant à l'actionPerformed en cas d'appuis sur le bouton wait.
Ensuite mon constructeur de Wait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (cmd.equals(WAIT)) { Wait waiter; pong = new Pong(); Pong.main(pong); while(!pong.isConnecte()) waiter = new Wait(pong, "Wait...", true); }
Et pour finir ma méthode connexion à l'intérieur du server pour pouvoir dialoguer avec le client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public Wait(JFrame parent, String title, boolean modal) { //On appelle le construteur de JDialog correspondant super(parent, title, modal); //On spécifie une taille this.setSize(150, 150); //La position this.setLocationRelativeTo(null); //La boîte ne devra pas être redimensionnable this.setResizable(false); //Enfin on l'affiche //this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); JPanel center = new JPanel(); JPanel bouton = new JPanel(); center.setLayout(new BorderLayout()); bouton.setLayout(new BorderLayout()); JLabel waiter = new JLabel("Waiting ...",JLabel.CENTER); center.add(waiter,BorderLayout.CENTER); getContentPane().add(center); getContentPane().add(waiter); this.add(center, BorderLayout.CENTER); this.add(newButton(CANCEL), BorderLayout.SOUTH); setVisible(true); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public void connexion() { try { connect = new Réseaux(2500); } catch (SocketException e1) { /** * A générer dans une vue d'erreur, cf V-Six */ e1.printStackTrace(); } catch (UnknownHostException e) { System.out.println("Erreur: host inconnue"); } try { connect.RecieveByServer(); setConnecte(true); } catch (IOException e2) { /** * Cf V-Six */ System.out.println("erreur reception data"); } }
Partager