TextField text isn't registered : what's wrong with this code?

java

#1

I am writing a little code in which the user sets up fuses for a firework on a Frame with different buttons on it, and then when he presses launch the animation a new window pops up and the firework is drawn on it, with a method called peindre from which I know it works already (I've tested it carefully).

Except when I want to create a frame in which the user sets up all fuses and then presses "launch animation", only a black window opens ! The fuses set up by the user in TextFields just aren't registered in the LinkedList of fuses I use, even though I add them to it. And I know it's just a problem of the program not registering the fuses, because when I add them manually to the list they are drawn fine.

So if someone could just tell me why the fuses created with the TextField values in this code aren't added to my list it would be just great !! Here's the part in which I create and add the fuse to my list. Thank you everyone :slight_smile:

public void actionPerformed(ActionEvent evt){
             if (evt.getSource() == animation){
			numero += 1 ;
			Fusee fuse = new Fusee(numero) ;
			puissEtincellesd = Double.parseDouble(puissEtincelles.getText());
			fuse.bicolore = bicolore.getState() ;
			fuse.couleur = couleur ;
			fuse.puissEtincelles = (int)puissEtincellesd ;
			fuse.xf = Double.parseDouble(avancement.getText()) ;
			fuse.yf = Double.parseDouble(altitude.getText()) ;
			fuse.forme = forme ;
			fuse.duree = Double.parseDouble(duree.getText()) ;
			fuse.tpsDepart = Double.parseDouble(tpsExplosion.getText()) ;
			fenetreAnimee.fusees.add(fuse) ; 
			fenetreAnimee.peindre(fenetreAnimee.getGraphics());  
			fenetreAnimee.setVisible(true);
		}


		}

So here comes my whole class in case the mistake is in the whole thing and not just in that little part :blush:
I added the fuse fus1 manually to the LinkedList fusees, and it was drawn perfectly ; also I printed out the list of all fuses and only the one added manually comes up. But not the ones entered by the user...

public class AnimationSansCanvas extends Frame implements ActionListener, ItemListener{

	//ATTRIBUTES
	public TextField duree, tpsExplosion, altitude, avancement, puissEtincelles, fichier ;
	public double dureed, tpsExplosiond, xf, yf, puissEtincellesd ;
	public boolean bicoloreb ;
	public Choice choixForme, choixCouleur ;
	public String forme ;
	public Color couleur ;
	public Button plus, chercheFichier ;
	public Button animation ;
	public Checkbox bicolore ;
	public FenetreAnimeeSansCanvas fenetreAnimee ;
	public FenetreNouvelleFusee fenetreNouvelleFusee ; 
	int numero = 0 ;
	public String choixFormes, choixCouleurs;
	static final long serialVersionUID=1L;  


	//CONSTRUCTOR
	public AnimationSansCanvas() {  
		super("AnimationSansCanvas") ;
		altitude = new TextField("Altitude de l'explosion") ;
		avancement = new TextField("Position de l'explosion sur l'axe des abscisses");
		duree = new TextField("Durée de l'affichage de la fusée") ;
		tpsExplosion = new TextField("Moment de l'explosion (par rapport au début de l'animation)");
		fichier = new TextField("Télécharger les fusées depuis un fichier texte : entrer ici le nom COMPLET (avec extension)");
		chercheFichier = new Button("Cliquer pour lancer la recherche du fichier texte et LANCER L'ANIMATION") ;
		choixForme = new Choice();
		choixForme.add("Choix de la forme :");
		choixForme.add("Étoile");
		choixForme.add("Croix");
		choixForme.add("Point");
		choixCouleur = new Choice();
		choixCouleur.add("Choix de la couleur :");
		choixCouleur.add("Rouge");
		choixCouleur.add("Vert");
		choixCouleur.add("Bleu");
		choixCouleur.add("Rose");
		choixCouleur.add("Jaune");
		choixCouleur.add("Orange");
		puissEtincelles = new TextField("Puissance de 8 du nombre d'étincelles");
		plus = new Button("Ajouter une fusée") ;
		animation = new Button ("LANCER L'ANIMATION") ;
		bicolore = new Checkbox("Fusée bicolore (la deuxième moitié sera rouge)", false) ;
		setLayout(new FlowLayout());
		this.add(altitude) ;
		this.add(avancement) ;
		this.add(duree);
		this.add(tpsExplosion);
		this.add(choixForme);
		this.add(choixCouleur);
		this.add(puissEtincelles);
		this.add(plus);
		this.add(bicolore);
		this.add(animation);
		this.add(fichier);
		this.add(chercheFichier);
		altitude.addActionListener(this);
		avancement.addActionListener(this);
		duree.addActionListener(this);
		tpsExplosion.addActionListener(this);
		puissEtincelles.addActionListener(this);
		plus.addActionListener(this);
		animation.addActionListener(this);
		choixCouleur.addItemListener(this);
		choixForme.addItemListener(this);
		bicolore.addItemListener(this);
		fichier.addActionListener(this);
		chercheFichier.addActionListener(this);

		fenetreAnimee = new FenetreAnimeeSansCanvas() ;
		fenetreAnimee.setVisible(true);

		addWindowListener(new EcouteurPourFermetureFenetre()); //pour tout arrêter en cas de fermeture de fenêtre
		setResizable(true);
	}




	//METHODES
	public void itemStateChanged(ItemEvent ivt){  
		if (ivt.getSource()==choixForme) {
			forme = choixForme.getSelectedItem();
		}
		if (ivt.getSource()==choixCouleur){
			if (choixCouleur.getSelectedItem()=="Rose"){
				couleur = Color.pink ;
			}
			if (choixCouleur.getSelectedItem()=="Bleu"){
				couleur = Color.blue ;
			}
			if (choixCouleur.getSelectedItem()=="Vert"){
				couleur = Color.green ;
			}
			if (choixCouleur.getSelectedItem()=="Rouge"){
				couleur = Color.red ;
			}
			if (choixCouleur.getSelectedItem()=="Jaune") {
				couleur = Color.yellow ;
			}
			if (choixCouleur.getSelectedItem()=="Orange") {
				couleur = Color.orange ;
			}
		}
	}





	public void actionPerformed(ActionEvent evt){
             if (evt.getSource() == animation){
			numero += 1 ;
			Fusee fuse = new Fusee(numero) ;
			puissEtincellesd = Double.parseDouble(puissEtincelles.getText());
			fuse.bicolore = bicolore.getState() ;
			fuse.couleur = couleur ;
			fuse.puissEtincelles = (int)puissEtincellesd ;
			fuse.xf = Double.parseDouble(avancement.getText()) ;
			fuse.yf = Double.parseDouble(altitude.getText()) ;
			fuse.forme = forme ;
			fuse.duree = Double.parseDouble(duree.getText()) ;
			fuse.tpsDepart = Double.parseDouble(tpsExplosion.getText()) ;
			fenetreAnimee.fusees.add(fuse) ; 
			fenetreAnimee.peindre(fenetreAnimee.getGraphics());  
			fenetreAnimee.setVisible(true);
		}


		}
	
	
	//MAIN
	public static void main(String [] abs){
		   AnimationSansCanvas anim = new AnimationSansCanvas();
		   anim.setLocation(100, 100);
		   anim.setSize(1100, 450);
		   anim.setVisible(true);
		   
		   
		   Fusee fus1 = new Fusee(300) ;
			fus1.couleur = Color.blue ;
			fus1.bicolore=true ;
			fus1.puissEtincelles = 6 ;
			fus1.xf = 679 ;
			fus1.yf = 435 ;
			fus1.duree = 56 ;
			fus1.tpsDepart = 2 ;
			fus1.forme = "point" ;
			
			anim.fenetreAnimee.fusees.add(fus1) ;
		   
		   
		   
		   for (Fusee fus : anim.fenetreAnimee.fusees){
			   System.out.println("Caractéristiques de la fusée (num, alt, avancement, durée, temps à l'explosion, forme, couleur, puissEtincelles, bicolore)");
			   System.out.println(fus.toString());
		   }
	

}}

#2

Hey @monabf

This looks like an issue that belongs in the Community>corner bar section of codecademy discuss. Easy confusion, but the Java section is where the codecademy lesson questions are asked, possibly why your question hasn't been answered. I'd suggest moving it there, and I'm sure someone else can help you out. Thanks.


#3

Thank you for moving the topic.