Partage
  • Partager sur Facebook
  • Partager sur Twitter

dessiner en java

demi disque et courbe

    29 mai 2009 à 22:42:17

    T'aurais pas laissé traîner un drawLine() par hasard dans ton paint() qui te relie toujours le premier point au dernier ? Ca m'a l'air d'être fortement ça en revoyant ta vidéo.

    De même je suis persuadé que le boolean qui change à chaque fois est dû au phénomène expliqué ici : http://www.siteduzero.com/tutoriel-3-1 [...] tml#ss_part_2

    Tu dis avoir testé avec un ActionListener je veux bien mais est-ce que t'as bien viré l'ItemListener entre temps ? Est-ce que t'as bien sauvegardé ? J'insiste car je suis persuadé que l'erreur est là (sans aucune certitude ^^).
    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2009 à 22:59:02

      j'ai bien tout viré avant de faire l'actionlistener.....

      aussi, je n'ai aucun drawline qui traine (par contre, j'ai un drawstring, mais, même si je le vire, sa ne change rien ;) )

      edit: j'ai testé avec une class interne (comme sur le lien que tu ma donnée, et toujours pareil)
      aussi, j'ai re testé avec un actionPerformed, et le probleme est toujours le même...
      • Partager sur Facebook
      • Partager sur Twitter
      Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
        31 mai 2009 à 16:50:57

        personne ne comprend pourquoi j'ai ces probleme????
        • Partager sur Facebook
        • Partager sur Twitter
        Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
          31 mai 2009 à 18:12:51

          import java.awt.event.*;
          import java.awt.*;
          
          public class Truc extends Frame {
          
          	private Panel panel = null;
          	private List lst = null;
          	private boolean selected = false;
          
          
          	public Truc() {
          		super();
          		
          		panel = new Panel();
          		lst = new List(2, false);
          		lst.add("Option 1");
          		lst.add("Option 2");
          		lst.setPreferredSize(new Dimension(100,100));
          		lst.addActionListener(new ActionState());
          
          		panel.setPreferredSize(new Dimension(400, 400));
          		panel.add(lst);
          		add(panel);
          		pack();
          		
          		addWindowListener(new WindowAdapter() {
          			public void windowClosing(WindowEvent e) {
          				System.exit(0);
          			}
          		});
          		setVisible(true);
          	}
          
          	class ActionState implements ActionListener {
          		public void actionPerformed(ActionEvent e) {
          			System.out.println(selected);
          			if(lst.getSelectedIndex() == 0) selected = true;
          			else if(lst.getSelectedIndex() == 1) selected = false;
          			System.out.println("     " + selected);
          		}               
          	}
          
          	
          	public static void main(String[] args) {
          		new Truc();
          	}
          
          }
          

          Marche très bien chez moi... Quand je double-clique sur une option de la liste, le booléen a la valeur que je désire.
          Je veux pas être méchant mais remets-toi en cause et cherche un p'tit peu aussi ;)

          Pour ton soucis du premier point relié au dernier, je te conseille vivement de vérifier les coordonnées de tes points. Si tu n'utilises que drawPolyline comme tu le dis il ne devrait pas y avoir d'erreurs si les coordonnées sont bonnes.
          • Partager sur Facebook
          • Partager sur Twitter
            31 mai 2009 à 18:57:14

            Je veux bien me remettre en cause (je sais que j'ai du faire une erreur)
            mais, regarde mon code, (qui ne marche pas.....) il est trés semblable au tiens.....

            public class CommandeVisu extends Panel { 
            	private List list;
            	private boolean courbeChoisie = true;
            	public CommandeVisu() {
            	}
            
            	public CommandeVisu(Visu visu) {
            		setBackground(Color.LIGHT_GRAY);
            
            		// ==========List=========
            		list = new List(4, false);
            		list.add("cercle", 0);
            		list.add("courbe", 1);
            		list.select(0); // selectionne l'index 0 donc ici "cercle"
            		list.addActionListener(new actionList());
            		add(list);
            	}
            
            	/**
            	 * retourne le choix effectué
            	 * 
            	 * @return le boolean courbeChoisie
            	 */
            	public boolean isCourbeChoisie() {
            		System.out.println("dans le get boolean courbeChoisie= "
            				+ courbeChoisie);
            		//ici retourne toujours true, même si, dans les deux cas de l'actionPerformed je place false....
                            // je ne comprend pas pourquoi, si j'ai fait une connerie je voudrai bien savoir ou
            		return courbeChoisie;
            	}
            	
            	class actionList implements ActionListener{
            
            		@Override
            		public void actionPerformed(ActionEvent ae) {
            			// TODO Auto-generated method stub
            			if(list.getSelectedIndex() == 0) courbeChoisie = true; 
            			else if(list.getSelectedIndex() == 1) courbeChoisie = false;
                                    //ici le boolean prend bien la bonne valeur
                                    //mais une fois resortie, entre ici, et le get, il repasse a true
            		}
            		
            	}
            


            voila, j'ai lu , relus ce code, et je ne trouve pas l'erreur.......

            merci de ton aide, et de ta patience ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
              1 juin 2009 à 0:07:58

              Ca marche très bien pourtant tu dois délirer quelque part :
              import java.awt.*;
              import java.awt.event.*;
              
              public class CommandeVisu extends Panel { 
              	private List list;
              	private boolean courbeChoisie = true;
              
              	public CommandeVisu() {
              		super();
              		setBackground(Color.LIGHT_GRAY);
              
              		// ==========List=========
              		list = new List(4, false);
              		list.add("cercle", 0);
              		list.add("courbe", 1);
              		list.select(0); // selectionne l'index 0 donc ici "cercle"
              		list.addActionListener(new actionList());
              		add(list);
              	}
              
              	/**
              	 * retourne le choix effectué
              	 * 
              	 * @return le boolean courbeChoisie
              	 */
              	public boolean isCourbeChoisie() {
              		System.out.println("dans le get boolean courbeChoisie= "
              				+ courbeChoisie);
              		//ici retourne toujours true, même si, dans les deux cas de l'actionPerformed je place false....
                              // je ne comprend pas pourquoi, si j'ai fait une connerie je voudrai bien savoir ou
              		return courbeChoisie;
              	}
              	
              	class actionList implements ActionListener{
              
              		@Override
              		public void actionPerformed(ActionEvent ae) {
              			System.out.println(courbeChoisie);
              			if(list.getSelectedIndex() == 0) courbeChoisie = true; 
              			else if(list.getSelectedIndex() == 1) courbeChoisie = false;
              			System.out.println("     " + courbeChoisie);
              		}
              		
              	}
              	
              	public static void main(String[] args) {
              		Frame frame = new Frame();
              		final CommandeVisu cv = new CommandeVisu();
              		frame.add(cv);
              		frame.addWindowListener(new WindowAdapter() {
              			public void windowClosing(WindowEvent e) {
              				System.exit(0);
              			}
              		});
              		frame.pack();
              		frame.setVisible(true);
              		new Thread(new Runnable() {
              			public void run() {
              				while(true) {
              					try {
              						cv.isCourbeChoisie();
              						Thread.currentThread().sleep(3000);
              					} catch(InterruptedException ie) {
              						ie.printStackTrace();
              					}
              				}
              			}
              		}).start();
              	}
              }
              

              Teste ce code et change l'état de ta liste tu vas voir que le boolean a toujours la bonne valeur.
              • Partager sur Facebook
              • Partager sur Twitter
                1 juin 2009 à 11:32:36

                oui, le boolean change bien de valeur dans la methode listener mais, elle rechange entre ça et sont get... je ne comprend pas, je ne voit pas....
                • Partager sur Facebook
                • Partager sur Twitter
                Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
                  1 juin 2009 à 14:38:49

                  Nan mais regarde mon code, toutes les 3 secondes il affiche le resultat de la variable courbeChoisie dans la console. Et je choppe ce résultat à partir de l'objet CommandeVisu et de sa méthode isCourbeChoisie. Et à chaque fois y'a la bonne valeur.
                  C'est quoi que t'appelles "son get" ? Son getter ? C'est bien la méthode isCourbeChoisie() ? Donc concrètement tout marche bien.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 juin 2009 à 18:33:45

                    j'ai fait encore une video, pour que tu vois a l'execution ce que cela donne........

                    j'ai placer des commentaire, et des System.out pour que tu puisse voir le probleme ;)

                    tu vas voir, j'ai surligné les parties a regarder..... (je clique bien sur, sur les boutons pour changer de representation graphique (donc, faire changer le boolean) )

                    voila, en espérant que tu puisse encore me venir en aide.... :euh:

                    voici le lien de la video
                    //clique sur la vue HD pour bien voir ;)


                    (je peux aussi t'envoyé les sourcse de tout le projet par MP, si tu veux bien sur ;) )


                    je te remercie pour ton aide ;)

                    edit: (j'ai regarder bien sur ce que me retourne cv.isCourbeChoisie() (dans une thread comme toi, ou autrement, il me retourne toujours true....)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
                      1 juin 2009 à 19:56:43

                      Nan ne m'envoie pas ton code stp je n'ai pas trop le temps pour ça pour l'instant ^^

                      Par ailleurs je ne peux pas visionner ta vidéo (le lien m'emmène vers une page de connexion... est-ce normal ?).

                      Ce que je trouve très bizarre, tu me donnes un code en me disant y'a une erreur dedans, je prends ton code et ajoute ce qu'il faut pour voir ce qui se passe, et résultat je ne vois aucune erreur.
                      Alors à partir de là, soit l'erreur se situe dans une autre de tes classes, soit y'a un gros délire avec ton JDK (autant dire c'est pas possible pour la dernière solution).
                      Pour détecter les erreurs de ce genre, pas bien compliqué : regarde son état à chaque fois que tu utilises ta variable (à chaque fois où son nom apparaît). Si tu es sûr de toi, alors c'est sûrement une méthode des APIs de Sun qui te changent ton booléen (ce qui me semble impossible puisque tu ne renseignes jamais ton booléen dans l'une de ces méthodes, car tu auras vérifié auparavant l'état de ta variable à chaque fois qu'elle apparaît).

                      En attente de temps libre et d'une vidéo à visionner.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 juin 2009 à 20:52:20

                        j'ai mit a jour le lien ;)

                        http://www.youtube.com/watch?v=0hMe7XqQJh0

                        je regard tout cela, mais, je ne touche au boolean que sur ce que tu as vue ;)
                        enfin, bref, je cherche

                        edit: je fait appel au constructeur de ma class CommandeVisu dans une autre class (dans son constructeur) (elle gere toutes les class)

                        sinon, je ne touche au boolean que a 4 reprises:

                        -la declaration
                        private boolean courbeChoisie = true;
                        


                        -dans le getter du boolean
                        public boolean isCourbeChoisie() {
                        	return courbeChoisie;
                        }
                        


                        et deux fois ici
                        public void itemStateChanged(ItemEvent arg0) {
                        		// TODO Auto-generated method stub
                        		if (list.getSelectedIndex() == 0) {
                        			// ici pour le cercle
                        			courbeChoisie = true;
                        			
                        			
                        
                        		} else {
                        			// ici pour la courbe
                        			courbeChoisie = false;
                        		}
                        
                        	}
                        


                        je ne touche a ce boolean nul par ailleur.....
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...

                        dessiner en java

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown