2016-12-30 3 views
0

DrJava를 사용하여 프로그래밍 중입니다. 이 코드는 모두 GUI에서 수행 된 작업 섹션에 속합니다.e.getSource Checkers 게임의 버튼이 작동하지 않습니다. GUI

2 개의 e.getSource 버튼을 제외하고 여기에있는 모든 것이 올바르게 작동합니다.

2 문장은 if (e.getSource()== b[a-9]) 및 if (e.getSource()== b[a-7])입니다.

모든 버튼에 작업 수신기를 추가했습니다.

버튼을 클릭하면 아무런 작업도 수행되지 않습니다.

작동하는지 확인하기 위해 System.out.println을 넣었지만 한번 클릭하면 화면에 인쇄되지 않습니다.

분명히 그들은 작동하지 않는다는 것을 의미하지만 그 이유는 무엇입니까? 전체 코드를 시험해보고 싶다면 그냥 물어 보면됩니다. 이것은 11 학년을위한 나의 CPT입니다.

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)); 
        } 
       } 
      } 
     } 
    }  
} 

고맙습니다. 해당 조건에 해당하면이 체크가 그런

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

:

+0

최소한의 실행 가능한 예제를 제공해야합니다. 인쇄물이 증명하는 것은 이벤트의 소스가 다양한 b [] 요소에 의해 참조되는 것과 같지 않지만 리스너를 설정하고 b []를 초기화하는 코드가 없기 때문에 도움이되지 않는다는 것입니다. –

+0

전체 코드를 보낼 수 있습니다. 그게 도움이된다면? – Adenloolfly

답변

0

먼저 당신이이 검사를

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

잘 사실 수 없다 때문에 같은 버튼 수와 동일하지 버튼 (a)와 (a-9)를 동시에 사용하십시오.

(a-7) 조건과 동일합니다. 동시에 (a)와 (a-7)은 결코 같을 수 없습니다.

+0

오 ~ 오케이. 그래서 (e.getSource() == b [a]) 그것을 꺼내어 (int a = 41; a <64; a ++) 루프에 넣었습니다. 이렇게하면 버튼이 작동하지만 원하는 방식대로 작동하지 않게됩니다. 나는 그것을 (e.getSource() == b [a]) 안에 유지할 수있는 방법이 있는가? – Adenloolfly