2016-12-30 2 views
0

Je programme en utilisant DrJava. Tout ce code tombe sous la section d'action effectuée dans une interface graphique.e.getSource Les boutons d'un jeu de Dames ne fonctionnent pas. GUI

Tout ici fonctionne correctement, sauf pour les 2 boutons e.getSource.

Les 2 instructions sont if (e.getSource()== b[a-9]) et if (e.getSource()== b[a-7]).

J'ai ajouté des écouteurs d'action à chaque bouton.

Lorsque je clique sur le bouton, aucune action n'est en cours.

Je mets un System.out.println pour voir s'ils fonctionnent, mais une fois cliqué dessus, il ne l'imprime pas non plus sur l'écran.

Cela signifie évidemment qu'ils ne fonctionnent pas, mais pourquoi? Si vous voulez essayer tout le code, demandez et je vous le donnerai. Ceci est mon CPT pour le grade 11.

if(player==1) 
{ 
    for(int a=41; a<64; a++) 
    { 
     if (e.getSource()==b[a]) 
     { 
      board(); 
      b[a].setBackground(new Color(0,255,0)); 
      if(!b[a].getText().equals(b[a-9].getText())&&!b[a].getText().equals(b[a-7].getText())) 
      { 
       b[a-9].setBackground(new Color(0,255,0)); 
       b[a-7].setBackground(new Color(0,255,0)); 

       //THIS IS NOT WORKING____________________________________ 
       if (e.getSource()== b[a-9]) 
       { 
        System.out.println("NOT WORKING"); 
        b[a-9].setText(piece1); 
        b[a].setText(""); 
        board(); 
        player2(); 
        player=2; 
       } 

       if (e.getSource()== b[a-7]) 
       { 
        System.out.println("NOT WORKING"); 
        b[a-7].setText(piece1); 
        b[a].setText(""); 
        board(); 
        player2(); 
        player=2; 
       } 
       //___________________________________________________________  
       if(e.getSource()==b[47]) 
       { 
        board(); 
        b[47].setBackground(new Color(0,255,0)); 
        if(!b[47].getText().equals(b[47-9].getText())) 
        { 
         b[47-9].setBackground(new Color(0,255,0)); 
        } 
       } 
       if(e.getSource()==b[48]) 
       { 
        board(); 
        b[48].setBackground(new Color(0,255,0)); 
        if(!b[48].getText().equals(b[48-7].getText())) 
        { 
         b[48-9].setBackground(new Color(0,255,0)); 
        } 
       } 
      } 
     } 
    }  
} 

Merci.

+0

Vous devez fournir des exemples minimaux pouvant être exécutés. Ce que votre empreinte prouve est que la source de l'événement n'est pas la même référencée par vos différents éléments b [], mais sans le code qui configure l'écouteur et initialise b [] il n'est pas possible d'aider –

+0

Je peux envoyer le code entier si cela pouvait aider? – Adenloolfly

Répondre

0

D'abord, vous avez cette vérification:

if (e.getSource()==b[a]) 

Ensuite, si cette condition est vrai que vous avez cette vérification:

if (e.getSource()== b[a-9]) 

bien qui ne peut jamais être vrai parce que le même bouton ne peut pas égaler le bouton (a) et (a-9) en même temps.

Identique à l'état (a-7). Il ne peut jamais être égal à (a) et (a-7) en même temps.

+0

ohhhh ok ça a du sens. Je l'ai donc sorti du (e.getSource() == b [a]) et l'ai placé dans la boucle (int a = 41; a <64; a ++). Cela fait fonctionner le bouton mais pas comme je le veux. Y a-t-il un moyen de le garder dans le (e.getSource() == b [a]) et de le faire fonctionner? – Adenloolfly