IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème de boucle!


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par défaut Problème de boucle!
    bonjour, j'ai 3 classes Trace et Trace2 et fermeagri dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class Trace extends JFrame implements ActionListener
    {
    	private static final long serialVersionUID = 1L;
    	JPanel	paneltrace;	
    	GridLayout gdl = new GridLayout(500,500);
     
    	public Trace ()
    	{	
    		paneltrace = new JPanel();
    		getContentPane();
    		setLayout( null );
    		setContentPane(new Graphe1());
     
    		setVisible(true);
     
    		System.out.println("Trace ok");
    	}		
    		public class Graphe1 extends JPanel
    		{
    			public Graphe1()
    			{
    				System.out.println("graphe 1 debut ok");
    				getContentPane();
    				setLayout(null);
    			}
    			public void paintComponent(Graphics g)
    			{
    				g.drawRect(90, 340, 90, 100);
    				g.setColor(Color.blue);
    				g.fillRect(100, 490, 70, 70);
    				g.setColor(Color.red);
    				g.fillRect(100, 610, 70, 70);
    				System.out.println("graphe 1 fin ok");
    			}              
    		}	
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public class Trace2 extends JFrame
    {	
     
    	protected int lon, lar;
    	protected String nomclient;
    	protected String tpr;
     
    	public Trace2 ()
    	{			
    		System.out.println("ecriture trace 2 ok 1");
    		getContentPane();
    		setBackground(Color.WHITE); 
    		setContentPane(new Graphe2());
    		System.out.println("ecriture trace 2 ok 2");
     
    		try {
    			System.out.println("ecriture trace 2 ok 3");
    			if (Main.connect == null) 
    				{	
    					...
    			System.out.println("ecriture 8tbis ok");
     
    			...
     
    			System.out.println("lon"+lon+"lar"+lar+" pour trace 2");
     
    		        ...
     
    		System.out.println("Dessinferme ok trace 2");
    	}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}		
    		System.out.println("Trace2 ok");
    		//new Graphe2();
    	}
     
    		public class Graphe2 extends JPanel
    		{
    			...
     
    			public Graphe2()
    			{
    				getContentPane();
    				setLayout(null);
    				System.out.println("public Graphe2 ok");
    			}
     
    			public  void paintComponent(Graphics g)
    			{
    				try {
    					System.out.println("ecriture 7t ok");
    					if (Main.connect == null) 
    						{
                                                        ...	
    						}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class Fermeagri extends JPanel implements ActionListener
    {
        JPanel panelferme;
        ...
    public Fermeagri()
    {
        panelferme = new JPanel();
        ...
        try {
    		...
             }
     
                   ...
     
        public void actionPerformed(ActionEvent arg0) {
    		 if(arg0.getSource() == OK)
    	        {
    			 try {
                                   ....
                                  }
                   System.out.println("fermeagri ");
                  }
     
                   System.out.println("AAAAAAAAAAAAAAAAAAAAAAA");
    	       Inscription.tabbedPane.setVisible(false);
    	       new Trace();	
    	       new Trace2();
    	       System.out.println("BBBBBBBBBBBBBBBBBBBBBBBB");
     
                       catch (Exception e) 
    				{
    					e.printStackTrace();
    				}
     
    }// fin de classe
    le compilateur suit le chemin suivant :
    AAAAAAAAAAAAAAAAAAAAAAA
    graphe 1 debut ok
    Trace ok
    ecriture trace 2 ok 1
    public Graphe2 ok
    ecriture trace 2 ok 2
    ecriture trace 2 ok 3
    ecriture 8tbis ok
    Trace2 ok
    BBBBBBBBBBBBBBBBBBBBBBBB
    fermeagri


    le problème est le suivant : je ne comprends pas pourquoi il retourne dans fermeagri pour l'executer une deuxieme fois alors qu'il ne devrait pas y retourner et aller plutot dans TRACE et TRACE2

    pour répondre à ta question nnovic, mon ActionPerformed est appelé depuis la classe Fermeagri.

    darrylsite, vous dites qu'elle n'est pas appelée 2 fois mais cela est évident car à partir de ces 3 classes et lors de l'éxécution j'obtiens 4 fenétres au lieu de 2 ! j'obtiens 2 fenétres en double (tracé deux fois et tracé2 deux fois ). j'aimerais éviter cette doublure.
    Merci.

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Citation Envoyé par amirkel Voir le message
    bonjour, j'ai 3 classes Trace et Trace2 et fermeagri dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    public class Trace extends JFrame implements ActionListener
    {
    	private static final long serialVersionUID = 1L;
    	JPanel	paneltrace;	
    	GridLayout gdl = new GridLayout(500,500);
     
    	public Trace ()
    	{	
    		paneltrace = new JPanel();
    		getContentPane();
    		setLayout( null );
    		setContentPane(new Graphe1());
     
    		setVisible(true);
     
    		System.out.println("Trace ok");
    	}		
    		public class Graphe1 extends JPanel
    		{
    			public Graphe1()
    			{
    				System.out.println("graphe 1 debut ok");
    				getContentPane();
    				setLayout(null);
    			}
    			public void paintComponent(Graphics g)
    			{
    				g.drawRect(90, 340, 90, 100);
    				g.setColor(Color.blue);
    				g.fillRect(100, 490, 70, 70);
    				g.setColor(Color.red);
    				g.fillRect(100, 610, 70, 70);
    				System.out.println("graphe 1 fin ok");
    			}              
    		}	
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public class Trace2 extends JFrame
    {	
     
    	protected int lon, lar;
    	protected String nomclient;
    	protected String tpr;
     
    	public Trace2 ()
    	{			
    		System.out.println("ecriture trace 2 ok 1");
    		getContentPane();
    		setBackground(Color.WHITE); 
    		setContentPane(new Graphe2());
    		System.out.println("ecriture trace 2 ok 2");
     
    		try {
    			System.out.println("ecriture trace 2 ok 3");
    			if (Main.connect == null) 
    				{	
    					...
    			System.out.println("ecriture 8tbis ok");
     
    			...
     
    			System.out.println("lon"+lon+"lar"+lar+" pour trace 2");
     
    		        ...
     
    		System.out.println("Dessinferme ok trace 2");
    	}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}		
    		System.out.println("Trace2 ok");
    		//new Graphe2();
    	}
     
    		public class Graphe2 extends JPanel
    		{
    			...
     
    			public Graphe2()
    			{
    				getContentPane();
    				setLayout(null);
    				System.out.println("public Graphe2 ok");
    			}
     
    			public  void paintComponent(Graphics g)
    			{
    				try {
    					System.out.println("ecriture 7t ok");
    					if (Main.connect == null) 
    						{
                                                        ...	
    						}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public class Fermeagri extends JPanel implements ActionListener
    {
        JPanel panelferme;
        ...
    public Fermeagri()
    {
        panelferme = new JPanel();
        ...
        try {
    		...
             }
     
                   ...
     
        public void actionPerformed(ActionEvent arg0) {
    		 if(arg0.getSource() == OK)
    	        {
    			 try {
                                   ....
                                  }
                   System.out.println("fermeagri ");
                  }
     
                   System.out.println("AAAAAAAAAAAAAAAAAAAAAAA");
    	       Inscription.tabbedPane.setVisible(false);
    	       new Trace();	
    	       new Trace2();
    	       System.out.println("BBBBBBBBBBBBBBBBBBBBBBBB");
     
                       catch (Exception e) 
    				{
    					e.printStackTrace();
    				}
     
    }// fin de classe



    le problème est le suivant : je ne comprends pas pourquoi il retourne dans fermeagri pour l'executer une deuxieme fois alors qu'il ne devrait pas y retourner et aller plutot dans TRACE et TRACE2

    pour répondre à ta question nnovic, mon ActionPerformed est appelé depuis la classe Fermeagri.
    Qu'est ce qui te fait dire qu'il revient une deuxieme fois? est ce parce que tu vois la serie des BBBBBB? Si c'est à cause de ça, sache que c'est tout à fait normal, puisque les deux classes Trace1 et trace2 sont crée avant l'execution de cette instruction.
    Lors de la création de ces classes, leurs constructeurs sont appelés et le code present dans ces constructeurs est executé avant l'eciture de la serie des BBB.

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo