Abasedebasse
Messages postés23Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention27 juillet 2007
-
9 avril 2007 à 18:45
Abasedebasse
Messages postés23Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention27 juillet 2007
-
10 avril 2007 à 16:57
Bonjour,
J'ai cette partie de code dans ma principale :
public class Principale {
private static Affichage affiche;
private static Discussion discu;
public static void main(String[] args) {
affiche = new Affichage();
discu = new Discussion (affiche);
discu.start();
}
}
Mon probleme est que dans mon affichage, j'ai un bouton "Stop" qui est cencé stopper la discussion...Or celle ci comme vous le voyez sur le code est lancé aprés l'affichage, je n'ai donc pas acces aux méthodes de ma classe Discussion...Comment faire donc pour que ce bouton marche ? J'ai bien pensé changer l'odre de déclaration mais c'est impossible car ma classe Discussion a besoin de l'affichage en parametre pour pouvoir envoier et recevoir des données de celui-ci...
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 20112 10 avril 2007 à 16:54
Salut,
Oui, c'est aussi une possiblité et si tu as un bouton démarrer/arrêter. Conceptuellement parlat, ça ne change pas grand chose, vu que c'est toujours depuis ta vue que tu interagis sur ton modèle.
Plus propre, peut être, plus interessant c'est à toi de voir^^
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 20112 9 avril 2007 à 21:36
Salut,
Je pense que le problème est conceptuel. A vue de nez, ta classe Affichage hérite de JFrame et ta classe Discussion hérite de Thread (ou implemente Runnable, là n'est pas la question).
En gros, tu as ta vue (Affichage) et le modele (Discussion). Ta vue ne connais pas le modele qu'elle affiche, ce qui est un tantinet genant pour ce qui est de la mise à jour (c'est faisable, mais pas vraiment demanière propre)
Bref, ça necessite une modification profonde de ton code, mais perso je ferai un
discu = new Discussion ();
affiche = new Affichage(discu);
Ave un appel à discu.start() dans le constructeur d'Affichage.
Abasedebasse
Messages postés23Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention27 juillet 2007 9 avril 2007 à 23:35
Je comprend bien ce que tu dis et je pense que c'est en effet un probleme conceptuel mais le probleme que je risque d'avoir c'est que dans ma partie de Discussion qui en fait est un échange Humain Machine, j'ai bien sur besoin d'afficher des choses à l'écran... Or si je déclare la Discussion avant l'affichage, je ne pourrais pas lui mettre en parametre l'affichage et donc je ne pourrais pas avoir acces a toutes mes méthodes d'affichages...comment faire donc ?
gmi19oj19
Messages postés545Date d'inscriptionlundi 10 mai 2004StatutMembreDernière intervention28 septembre 20112 10 avril 2007 à 07:46
Salut,
Si tu utilises les classes Observer/Observable du JDK et en plaçant un champ toAffiche dans ta classe Discussion, qui correspond à ce que tu dois afficher ensuite, u pourras y accéder pendant ton update() dans Affichage puisque tu auras accès à la discussion.
Après, c'est très facile si tu n'affiches qu du texte, mais si tu dois afficher des choses un peu plus poussées, c'est vite galère je pense...
gmi19oj19
Vous n’avez pas trouvé la réponse que vous recherchez ?
Abasedebasse
Messages postés23Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention27 juillet 2007 10 avril 2007 à 16:43
Dis moi si je me trompe, mais serait il plus intéréssant et donc plus propre que je lance mon affichage graphique et que dans cette classe (grace a une bouton du style lancer discussion), je crée et lance mon Thread discussion ?