Bonjour à tous ,

J'ai un problème lié avec mon tchat client/Serveur que j'essaie de développer.
Donc je vous explique le fonctionnement du tchat (que 4 mois d'expérience en java).

Je lance le serveur, je lance mon Tchat. Sur l'interface il y a un bouton se connecter qui crée un Socket afin d'établir la connexion au serveur. Jusqu'ici aucun soucis mais le problème arrive.

J'essaie de faire en sorte qu'à chaque connexion, le nom de l'utilisateur s'affiche dans le JList répertoriant les utilisateurs connectés.

J'ai un problème sur la méthode JList.setModel(unModel). Il me retourne une erreur. J'ai fais des recherche sur le forum qui parlait de l'EDT. Même avec la mise en place de l'EDT cela ne fonctionne pas.

Dois-je continuer de creuser sur l'EDT ou bien essayer éventuellement la mise en place du DP Observer ?

edit: avec l'erreur, c'est mieux : java.lang.NullPointerException

Voici le code :

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
27
28
29
30
31
32
for(int i=0; i < model.length ; i++) {
			modelFinal.addElement(model[i]);
		}
 
		tchat.modelFinal = modelFinal;
 
		System.out.println("Taille du model:" +model.length +" > " +model[0]);
 
		Thread debutMaj = new Thread(new Runnable() {
			public void run() {
				System.out.println("mise a jour du JLIST");
 
				//nouveau thread pour la mise a jour du JLIST
				Thread finMaj = new Thread(new Runnable() {
					public void run() {
							tchat.list_user.setModel(tchat.modelFinal); //Si je désactive cette ligne j'ai une erreur sur celle d'après
						list_user.repaint();
					}
				});
 
				if(SwingUtilities.isEventDispatchThread()) {
					System.out.println("Le thread n'est pas dans le pile de SWingUtilities");
					finMaj.start();
				}
				else {
					System.out.println("On entre dans l'EDT");
					SwingUtilities.invokeLater(finMaj);
				}
			}
		});
 
		debutMaj.start();
Merci de m'éclairer