-- Un gros probleme entre méthodes. [[Java]] - Java - Programmation
Marsh Posté le 29-01-2003 à 00:57:10
En gros j'ai des variables dans une classe et je veux y acceder dans une autre classe...
quel est le plus simple à faire ?
s'il vous plait un coup de main
Marsh Posté le 29-01-2003 à 01:21:35
ReplyMarsh Posté le 29-01-2003 à 01:32:35
zytrahus5 a écrit : En gros j'ai des variables dans une classe et je veux y acceder dans une autre classe... |
public Planete getLaFoutuePlanete() { |
....
Marsh Posté le 29-01-2003 à 07:07:49
zytrahus5 a écrit : salut,
|
Je ne suis pas convaincu que le System.exit(0) soit une bonne idée. Enfin, tout dépend de ce que tu veux dire, mais là, comme ça, ça fait bizarre.
Marsh Posté le 29-01-2003 à 08:21:38
Cherrytree a écrit : |
il me semble que c'est bon. En fait qd t'as l'evenement de fermeture de fenetre, le prgm ne finit pas. c juste la fenetre qui se ferme. si tu veux quitter qd la fenetre est fermée, fo ajouter ca.
Marsh Posté le 29-01-2003 à 08:22:41
gloop a écrit : |
Ben justement, j'étais pas sûr que ce qu'il voulait c'était quitter.
Marsh Posté le 29-01-2003 à 08:23:35
zytrahus5 a écrit : salut,
|
il me semble que la méthode windowclosing n'est pas la bonne.
C'est
Code :
|
Marsh Posté le 29-01-2003 à 08:23:58
ReplyMarsh Posté le 29-01-2003 à 08:24:34
gloop a écrit :
|
très juste.
Marsh Posté le 29-01-2003 à 08:26:14
gloop a écrit : |
En fait je vois pas pourquoi son Adapter d'ajout de Planète aurait à définir une méthode windowClosing. ça fait un bout que j'ai pas écrit du Swing, mais quelque part ça me choque.
Marsh Posté le 29-01-2003 à 08:27:46
Cherrytree a écrit : |
exact, normalement on fout ca pour la fenetre principale. enfin il me semble, ca fait un bout de temps que j'ai pas codé ce genre de truc
Marsh Posté le 29-01-2003 à 08:44:21
merci pour le coup de main
comme j'avais pleins de problemes, avec toutes les fenetres, j'ai décidé de tout centraliser dans la principale...
et à mon grand desespoir, je me suis rendu compte qu'il y avait un probleme au lancement de la classe calcul
j'ai exactement la page d'erreur qui apparait, comme hier quand les champs étaient mal initialisés
pourtant cette fois ils sont bien initialisés
dans cette fenetre il y a tous les boutons, le probleme apparait quand je clique sur le bouton calcul....
package mvt_planete; |
Marsh Posté le 29-01-2003 à 08:49:29
en regardant bien l'erreur n'est pas la meme
il y a ça au début du message qui est différent :
Exception occurred during event dispatching: |
2 c'est ma valeur de mon int n, le probleme apparait a la ligne de lancement de la classe calcul...
est elle mal déclarée ?
Marsh Posté le 29-01-2003 à 08:51:36
zytrahus5 a écrit : en regardant bien l'erreur n'est pas la meme
|
c pas ton btn calcul qui fait planté. C'est à l'intérieur du constructeur de la classe Calcul: dépassement d'indice à priori
Marsh Posté le 29-01-2003 à 08:53:01
bah justement, ça me semblait correct j'esperais au moins en avoir fait une de bonne
package mvt_planete; |
Marsh Posté le 29-01-2003 à 08:59:05
au lieu d'utiliser ton Np, utilise la méthode size () de Vector.
Comme ca t'es sur d'avoir tjs la bonne taille et ca t'évite aussi de gérer un compteur à coté
Marsh Posté le 29-01-2003 à 09:03:53
"Principale.java" : Erreur No. 300 : méthode size(java.util.Vector) introuvable dans classe mvt_planete.Principale en ligne 156, colonne 40
gloop a écrit : au lieu d'utiliser ton Np, utilise la méthode size () de Vector. |
voilà, j'ai remplacé dans la classe principale, j'ai mis ça :
result = new Calcul(tab_planetes,10,size(tab_planetes),1); |
là il est compile meme plus... ouinnnnn on dirait que je fais que des erreurs
"Principale.java" : Erreur No. 300 : méthode size(java.util.Vector) introuvable dans classe mvt_planete.Principale en ligne 156, colonne 40 |
Marsh Posté le 29-01-2003 à 09:05:38
Code :
|
et t'as plus besoin de passer en paramétres. tu peux l'utiliser directement dans ta fonction
Marsh Posté le 29-01-2003 à 09:06:05
tab_planetes.size(), c'est mieux.
edit : je suis grillé.
Marsh Posté le 29-01-2003 à 09:06:36
oups, j'ai rien dit, j'avais mal fait la syntaxe...
mainetanant le meilleur pour la fin :
le programme part en boucle infini au moment du calcul
Marsh Posté le 29-01-2003 à 09:07:57
t'as mis
Code :
|
mais ce serait sans doute
Code :
|
Marsh Posté le 29-01-2003 à 09:11:14
gloop a écrit : t'as mis
|
chu trop nul
bon, encore un probleme, je vois pas ce qu'il ne va pas là :
il me sort la meme erreur avec indice exceed :
Exception occurred during event dispatching: |
Marsh Posté le 29-01-2003 à 09:18:24
apparemment, d'apres le message d'erreur ça viendrait de cette ligne :
current_traj = (Vector) all_traj.elementAt(j); |
mais je vois pas ce qui ne va pas la dedans
Marsh Posté le 29-01-2003 à 09:21:52
t'essai d'acceder à l'indice 3 de ton vecteur qui ne contient aucun elt. Verifie tes tailles et indices
Marsh Posté le 29-01-2003 à 09:25:08
gloop a écrit : t'essai d'acceder à l'indice 3 de ton vecteur qui ne contient aucun elt. Verifie tes tailles et indices |
ça doit pas etre ça, parce que je viens de mettre un println, et il me sort bien que j'ai 3 composantes dans mon vecteur... non nulles qui plus est
Marsh Posté le 29-01-2003 à 09:31:27
j'ai pas relu tout le code mais au début tu initialises all_traj comme un Vector. Apparemment tu veux un vecteur de vecteurs mais tu initiliases pas les vecteurs à l'intérierur. Au début essaie d'ajouter ca:
Code :
|
Marsh Posté le 29-01-2003 à 09:32:39
gloop a écrit : j'ai pas relu tout le code mais au début tu initialises all_traj comme un Vector. Apparemment tu veux un vecteur de vecteurs mais tu initiliases pas les vecteurs à l'intérierur. Au début essaie d'ajouter ca:
|
c'est exactement ce que je veux oui, un vecteur de vecteur. j'essaie ton code.
Marsh Posté le 29-01-2003 à 09:34:59
ouinnnnnnnnnn, ça a évolué, mais ça pose toujours probleme, voilà le msg d'erreur :
Exception occurred during event dispatching: |
cette fois il dit 2>=2
Marsh Posté le 29-01-2003 à 09:43:41
je vais essayer d'expliquer ce que j'ai tapé à la fin de ma classe calcul :
current_traj = (Vector) all_traj.elementAt(j); |
autrement dit le but, est d'ajouter un élément de type Point2D.Double à un vecteur lui meme contenu dans un vecteur.
Marsh Posté le 29-01-2003 à 09:48:10
gloop a écrit : ca plante sur quelle ligne ? |
la premiere... avec le message :
Exception occurred during event dispatching: |
les deux éléments sont non nuls...
EDIT : Quand je dis la premiere, c'est la premiere des trois que j'ai expliqué plus haut...
Marsh Posté le 29-01-2003 à 09:52:36
tu vas une unité trop loin avec j. Vérifie tes tests de boucle
Marsh Posté le 29-01-2003 à 09:53:24
[citation=296076,1][nom]gloop a écrit[/nom]tu vas une unité trop loin avec j. Vérifie tes tests de boucle
[/citationp]
pourtant je mets bien < (strictement) Np ?
Marsh Posté le 29-01-2003 à 09:54:45
utilise la méthode size () sur le vector que tu veux parcourir, ca t'evitera des probs d'indices
Marsh Posté le 29-01-2003 à 09:55:22
j'ai trouvé....
mes trois lignes étaient pas dans la bonne boucle, une acolode fermée trop tot
Marsh Posté le 29-01-2003 à 09:59:48
si je veux que ma classe calcul renvoi le vecteur de vecteur, il faut que je modifie toute ma classe non ?
parce que là, j'ai qu'un constructeur il faudrait que je mette tout dans une méthode...
?
Marsh Posté le 29-01-2003 à 10:03:27
a moins que je puisse accéder aux attributs de la classe calcul par le biais du constructeur que j'ai créé dans la fenetre principale ?
if (src==calcul) |
par exemple, si je le complete de cette façon :
if (src==calcul) |
est ce que ça serait bon ?
Marsh Posté le 29-01-2003 à 11:35:49
zytrahus5 a écrit : a moins que je puisse accéder aux attributs de la classe calcul par le biais du constructeur que j'ai créé dans la fenetre principale ?
|
oui, mais vaut mieux créer une méthode d'accés plutot que de tout mettre en public.
dans cette méthode tu renvoies soit une copie de ton vecteur soit directement la référence, c'est à toi de voir ce que tu veux en faire.
Marsh Posté le 29-01-2003 à 00:41:07
salut,
je localise le probleme :
public class Planete {
//Attributs
String _nom;
double _masse;
Point2D.Double _position;
Point2D.Double _vitesse;
Vector _trajectoire;
........./.........
if (src==_bajoutpla) // LANCE LA FENETRE D AJOUT DE PLANETE...
{
WindowListener l = new WindowAdapter()
{ public void windowclosing() { System.exit(0);} };
//incrémente le compteur de planete entrée.
Nb_planete++;
//Ouvre la fenetre ajout_planete
ajout_planete ajout = new ajout_planete(Nb_planete);
Le hic c'est que je vois pas du tout comment faire ça... c'est à dire que la méthodes actionPerformed de la classe ajout_planete ne me permet pas de renvoyer autre chose que void !!!!
Comment est ce que je pourrais faire pour que ma classe ajout_planete renvoie un élément de type planete à saisie ???
---------------
http://www.zytratech.com