Temps Reel Java - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Temps Reel Java (/showthread.php?tid=5968) |
RE: Temps Reel Java - Aleskweb - 17-02-2012 Hum dernière petite question :
Le code ci-dessus ne fonctionne pas, le problème vient du tabtiles[c].getChildren().add(tile); apperement, je peu bouger les groupes comme je le veux, mais quand j'essaie de modifier son contenu avec getChildren().add() voici l'erreur Code : Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Not on FX application thread; currentThread = AWT-EventQueue-0 RE: Temps Reel Java - Maks - 17-02-2012 Tu es sûr que le reste fonctionne ? Ton paramètre formel c dans setCase() ne dépasse pas 200 ? Dans ton constructeur : "this.getChildren().add(partMap);", this fait référence à quel contexte ? Au niveau des API j'ai regardé ça m'a l'air correct. Sinon pense à initialiser les attributs dans le constructeur plutôt qu'à la volée RE: Temps Reel Java - Aleskweb - 17-02-2012 Meme en fixant tabtiles[2].getChildren().add(tile); celui ci ne fonctionne pas. En revanche, si je le met dans le constructeur "public Map(int id, int mx, int my, PrintWriter out)" juste après la génération de la map, cela fonctionne, c'est a rien n'y comprendre. Aussi, je peu très bien modifier la position de tabtiles[x], et cela marche très bien, il n'y a que le getChildren().add qui blocke Le "this" fait référence a l'objet en lui même, je l’appelle depuis une autre classe :" nmap = new Map(1,410,100,out);" et je l'affiche "Ecran.getChildren().add(nmap);" Et pour ce qui est de l’initialisation des attributs, ce que tu veux dire c'est que j'initialise les variables hors du constructeur (du genre "Group monGroup;" et que je les définisses dans le constructeur "monGroup = new Group();" ? RE: Temps Reel Java - Maks - 17-02-2012 Ton problème pour tabtiles[], je crois comprendre. Dans ton constructeur et dans setX() tu appliques les méthodes getChildren() et add() à une variable objet de type Group : partMap. Or dans setCase(), tu appliques ces méthodes à un tableau Group[] qui ne possèdent pas nécessairement ces méthodes ? Essaye de faire un typeof et instanceof de tabtiles[c] Oui voilà, en théorie on initialise tout dans le constructeur et aussi tous les attributs doivent être en privé (ou protected) ^^ RE: Temps Reel Java - Aleskweb - 17-02-2012 Merci Le typeof donne : javafx.scene.Group A quoi dois-je comparer le instanceof? RE: Temps Reel Java - Maks - 17-02-2012 A Group mais le typeof ne laisse pas d’ambiguïté visiblement. Ton paramètre c n'est pas hors champ ? (+200) ou indéfini ? Si tu l'affiches ça donne quoi ? T'as essayé de passer tabtiles en private ? Ton setCase() tu l’appellerais pas depuis un event par hasard ? Car le message c'est "je suis dans le thread de l'event (la queue) et non dans celui de javafx" si je comprends bien. Fais voir comment tu appelles ça RE: Temps Reel Java - Myrina - 17-02-2012 A tout hasard, mets un point d'arrêt dans le constructeur et lance l'application eb debug pour voir quel thread se trouve intercepter par le point d'arrêt; si ça se trouve, ce thread diffère de AWT-EventQueue-0 qui est celui qui utilise ton timer. RE: Temps Reel Java - Maks - 17-02-2012 Si c'est un problème de Thread comme je le pense, ça pourrait être du à l'EDT : http://en.wikipedia.org/wiki/Event_dispatching_thread Pour y executer du code asynchrone : http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html#invokeLater%28java.lang.Runnable%29 RE: Temps Reel Java - Aleskweb - 17-02-2012 Mon paramètre c je même en le fixant a 2 ça me met l'erreur, alors que comme je l'ai dit, quand je met la même ligne direct après la création de la map (dans le constructeur) ca marche nickel. Donc en fait j'ai l'impression que dès que je sort du constructeur que j'ai appelé ( nmap = new Map(1,410,100,out); ) Il est impossible de modifier les Group. Et encore ce n'est pas totalement le cas, j'ai fait un test et j'ai rajouté ceci : Code : public void affm() Et la, ça fonctionne. Je comprends vraiment pas. Edit: Oui j'apelle depuis un event : Code : public class Rendu extends Parent{ Bon en gros, c'est quand je recoit de mon serveur un message de la forme "1/x" avec x numéro de l'image sa m'affiche l'image; Oula euu je vais voir ce que vous m'avez envoyé après le repas. Merci RE: Temps Reel Java - Aleskweb - 17-02-2012 Donc quelqu’un a compris le problème? J'apelle une classe JavaFx depuis Awt? C'est ca? Dans ce cas la si j'utilise un Timer issu de java.util.timer, ca devrais regler le problème? |