2016-04-16 9 views
0

これは非常に具体的です。だから私は小さなクイズのアプリを作っているとすべてが完了ですが、私は問題があります。だから、私は正しい答えをクリックすると、緑色になり、correctAnswerカウンタが上がります。私が間違った答えをクリックすると、それは赤くなり、正解は緑色になります。そして私は次の質問のために次のボタンを持っています。ボタンをクリックした後にマウスリスナーを削除するには?

あなたはすでに問題がどこにあるかを見ていますか?回答をクリックすると、他の回答をクリックすることができます。クリックした後にボタンを無効にしたくないのは、それらを緑色/赤色にしたいからです。

私は答えを選ぶときに次のボタンをクリックしたいだけです。しかし、私は色が失われるので、回答ボタンを無効にしたくありません。ここで

は私の方法

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     jButton1.setBackground(Color.green); 
     Kviz.correctAnswers++; 
    }           

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
     jButton1.setBackground(Color.green); 
     jButton2.setBackground(Color.red); 
     // TODO add your handling code here: 
    } 
+1

まあ、あなたがやっていることに応じて、それが正しいかどうかを知らせる前に、受け入れボタンのようなものを待つことができます。 1つの機能が選択されたら他のオプションを無効にすることはできますが、それはユーザーが心を変える可能性を排除します – MadProgrammer

答えて

0

のいくつかはちょうどanswerPickedという変数を作成しています。 falseに設定し、ユーザーが回答を選択するたびにtrueに設定します。回答がすでに選択されている場合、アクションリスナーが何もしないようにするには、これを使用します。その後、ユーザーが次の質問に移動すると、answerPickedをfalseにリセットして、ユーザーが再度回答を選択できるようになります。

0

なぜユーザーがクリックしたかどうかを制御するブール型インスタンス変数を作成しないでください。

boolean bIsClicked = false; 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     if(bIsClicked == false){ 
      jButton1.setBackground(Color.green); 
      Kviz.correctAnswers++; 

      //change the status 
      bIsClicked = true; 
     } 
    }           

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
     if(bIsClicked == false){   
      jButton1.setBackground(Color.green); 
      jButton2.setBackground(Color.red); 
      // TODO add your handling code here: 

      //change the status 
      bIsClicked = true; 
      } 
    }