Probléme de boucle

Résolu
amirkel Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 12 septembre 2009 - 10 sept. 2009 à 18:31
amirkel Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 12 septembre 2009 - 12 sept. 2009 à 11:42
bonjour, j'ai 3 classes Trace et Trace2 et fermeagri dont voici le code :

Code :

 
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 :

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 :

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
 


Citation:
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.
Mon ActionPerformed est appelé depuis la classe Fermeagri.
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 réponses

amirkel Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 12 septembre 2009
12 sept. 2009 à 11:42
merci bcp pour ton aide uhrand
exact le probléme était que j'appelais mon actionperformed deux fois
j'ai superposé dans les constructeurs des 2 classes 2 bouttons ok sans faire attention d'ou l'appel en double de l'action performed lol !
le probléme est réglé !
bonne journée.
3
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
11 sept. 2009 à 07:10
>Mon ActionPerformed est appelé depuis la classe Fermeagri.
>Lors de l'éxécution j'obtiens 4 fenétres au lieu de 2 !

Je dirais que ton ActionPerformed est appelé deux fois.
Je ne peux pas t'aider plus, car le problème n'est pas dans le code que tu montre.
0
Rejoignez-nous