Probleme de addActionListener [résolu] - Java - Programmation
Marsh Posté le 12-12-2004 à 12:41:32
Et t'as pas des erreurs de compilation avec ça ?
Marsh Posté le 12-12-2004 à 12:44:20
j'sais pas mais c'est moche et pas facile à comprendre. Tu le sors d'où memoire dans ton Ecouteur3 ?
Marsh Posté le 12-12-2004 à 12:47:30
je sais que ca doit etre moche, c pour cela que je demande eds conseils, je suis un peu perdue...
Ba en fait pour 'memoire', je cherche a appeler mon vector pour qu'il me stocke mon element..
Marsh Posté le 12-12-2004 à 13:00:06
perso je trouve pas ça si moche, y'a même un truc qui me parait assez finau pour une débutante, avec l'interface Dessinable ! Et c'est pas WhatDe notre grand spécialiste es-java qui me contredire, tu peux lui demander !
le problème - à vue de nez - c'est ton appel de repaint(), j'crois que c'est un truc à te prendre des coups de pelle à clou - à confirmer.
t'as essayé de mettre un bete System.out.print("pouet" ) dans ton ecouteur3? ou d'utiliser un debugger?
Marsh Posté le 12-12-2004 à 13:07:01
oui si je mets un System.out.print("pouet" ); ca marche tres bien il me l'affiche dans l'output.
Mais tu as raison mon repaint() je faisais ca en test ca sert a rien je pense..
Le truc c'est que le rectangle que je demande a aficher dans mon 'ecouteur3' ne s'affiche pas alors que si je mets "d1.addelement(new Rectangle(30,30));" en dessous de "add("Center",d1);" ca fonctionne tres bien.
C'es dans la partie ecouteur3 que ca ne focntionne pas.
Et si je mets "d1.addelement(new Rectangle(30,30));" dans mon 'ecouteur3', il ne veut pas --> 'cannot find symbol'
Marsh Posté le 12-12-2004 à 13:10:58
ben normal, d1 est local au constructeur de ta 1ere classe.
non, le probleme c'est uniquement le repaint, mais je ne sais plus ce qu'il faut faire à place.
demande a whatde
Marsh Posté le 12-12-2004 à 13:16:36
the real moins moins a écrit : perso je trouve pas ça si moche, y'a même un truc qui me parait assez finau pour une débutante, avec l'interface Dessinable ! Et c'est pas WhatDe notre grand spécialiste es-java qui me contredire, tu peux lui demander ! |
C'est clair. Je sais pas ce que branle WhatDe, il faudrait lui envoyer un Message Perso pour qu'il vienne sur ce topic pour résoudre les problème d'exécution du code, vu que c'est le seul qui maîtrise le Java par ici.
Mais le dimanche, il a pas ses entraînements de pompier volontaire ? Ou bien il a sport ?
Marsh Posté le 12-12-2004 à 13:17:57
myeve a écrit : |
dans ta classe MonCanvas tu as fais une méthode addElement, et après tu accède directement au Vector (private qui plus est) sans utiliser cette méthode... c'est assez bizarre.
Sinon +1 avec -- pour l'interface Dessinable. Je me replonge dans ton code, j'espere que WhatDe passera par ici il pourra surement t'aider.
Marsh Posté le 12-12-2004 à 13:24:04
N'empeche je comprends toujours pas comment tu peux accéder à memoire depuis un Ecouteur3...
Marsh Posté le 12-12-2004 à 13:27:15
oui je suis d'accord, je ne peux surement pas acceder a memoire dans mon Ecouteur3, mais comment utiliser le vecteur pour stocker mon rectangle afin de l'afficher ?
Sinon j'ai mis public Vector memoire = new Vector(); dans ma class 'MonCanvas' et ca ne change rien..
Marsh Posté le 12-12-2004 à 13:35:09
R3g a écrit : N'empeche je comprends toujours pas comment tu peux accéder à memoire depuis un Ecouteur3... |
t'as acces au membres privés d'une classe depuis une inner class..
Marsh Posté le 12-12-2004 à 13:39:06
the real moins moins a écrit : t'as acces au membres privés d'une classe depuis une inner class.. |
Mais Ecouteur3 n'est pas une inner class, ou c'est mes yeux qui deconnent ?
Marsh Posté le 12-12-2004 à 13:45:39
R3g a écrit : Mais Ecouteur3 n'est pas une inner class, ou c'est mes yeux qui deconnent ? |
Tu confonds inner et nested. Une nested class (ou member class) est "inner", tout comme le sont les "anonymous" et "local" classes.
Une classe définie dans le même fichier qu'une classe "publique" verra donc ses membres private. Il me semble.
Marsh Posté le 12-12-2004 à 13:48:17
Bon pour ce qui est du repaint () en general il faut faire un validate () ou un revalidate () pour demander à redessiner...
Marsh Posté le 12-12-2004 à 13:53:38
Lam's a écrit : Tu confonds inner et nested. Une nested class (ou member class) est "inner", tout comme le sont les "anonymous" et "local" classes. |
pfiou, j'ai eu peur un moment, je retombais plus sur le nom "nested", du coup j'etais plus sur de moi
Marsh Posté le 12-12-2004 à 13:54:30
Ah parce que tout ça c'est le même fichier ?
Marsh Posté le 12-12-2004 à 14:05:46
oui tout est dans le meme fichier..
je verrais ensuite pour separer..
Marsh Posté le 12-12-2004 à 14:13:59
ba en fait ca compile et ca se lance, j'ai retiré qq trucs qui ne me paraissaient pas necessaires pour mon probleme, je voulais pas vous embeter avec le code complet..
Je pensais que ca servirait a rien...
Marsh Posté le 12-12-2004 à 14:25:47
alerim a écrit : Et écrire un code qui compile déjà, ça te branche pas ? |
et arreter de rouler des mécaniques, ça te branche? ça compile.
Marsh Posté le 12-12-2004 à 15:54:24
Désolé je suis un peu perdue, si je mets :
Code :
|
dans mon constructeur 'Fenetre', en dessous de :
Code :
|
Il m'affiche bien le rectangle, mais si mets cette partie de code dans :
Code :
|
Il me met en erreur:
Code :
|
Alors je ne peux pas compiler ..
C'est normal ca ?
Marsh Posté le 12-12-2004 à 15:56:21
ben oui; lis les messages d'erreurs.
au fait t'as essayé le (re)validate() à la place de repaint() ?
(comme suggeré par patachou)
Marsh Posté le 12-12-2004 à 16:04:52
Alors j'ai modifié mon bouton Ecouteur3:
Code :
|
Alors si j'utilise 'validate()', ca ne change rien par rapport à 'd2.paint()'
C'est le fait de mettre 'd2.addelement(r3)' qui permet d'aller lancer le paint, car il rentre dans la boucle de ma methode 'paint' avec 'd2.addelement(r3);'
Marsh Posté le 12-12-2004 à 16:28:30
Bon j'ai avancé:
j'ai mis mes Ecouteurs dans ma classe Fenetre principale:
Code :
|
Or dans ce cas, lorsque je clique sur mon bouton 'Rectangle', il m'affiche bien le rectangle comme demandé.
Mais j'ai commenté la partie dans ma classe 'Fenetre':
//MonCanvas d1 = new MonCanvas();
//add("Center",d1);
Car sinon le rectangle ne s'affiche pas, et ca c'est embetant.
Or si je clique plusieurs fois sur le bouton, il devrait stocker ca dans le vecteur nan ?
Alors que la il ne garde toujours que le dernier...
Marsh Posté le 12-12-2004 à 16:30:02
J'aime deja beaucoup plus. Une petite question : tu penses appeler la methode validate() de quel objet au juste ?
Marsh Posté le 12-12-2004 à 16:35:08
Ah si ok, si je le mets pas ya rien qui s'affiche
Mais le probleme, si je clique deux fois dessus, le vector n'a pas gardé l'ancien ..
Marsh Posté le 12-12-2004 à 16:44:51
myeve a écrit : ba en fait je vois pas a quoi ca correspond validate ? |
-> tuto + javadoc
Marsh Posté le 12-12-2004 à 21:20:27
Bon en tout cas merci a tout le monde, j'ai enfin resussi et fini ce que je voulais faire, je le mets pour ceux que ca interesse de savoir ce que je voulais vraiment
Ce programme marche!
Code :
|
Marsh Posté le 12-12-2004 à 11:57:32
Bonjour, je suis debutante en java, je voudrais qu'en cliquant sur un bouton de ma fenetre, il me créé un rectangle et me l'affiche. Voici la structure de mon programme:
Or je n'arrive pas a avoir l'affichage du rectangle depuis ce bouton 'Ecouteur3'...
Quelqu'un pourrait il m'aider ?
Message édité par myeve le 12-12-2004 à 23:12:50