2016-05-07 12 views
2

私はあなたが質問の回答を提出してから次のページに移動できるようなアプリケーションを作成しています。私は2つのJButtons、 "submit"と "next"を使ってこれをやっています。送信をクリックするたびに、送信ボタンを無効にして、次のボタンを有効にします。次をクリックすると、次のボタンを無効にして、送信ボタンを有効にします。

私のプログラムをテストするとき、このリレーションシップは各ボタンに対して一度しか動作しませんが、お互いをディスエーブルにしないで、両方のボタンは永久に有効のままです。

このJButton関係は、呼び出された回数だけ動作させるにはどうすればよいですか?両方のボタンを設定するコードは次のとおりです。JButtonを有効/無効にするのは一度しか動作しません

buttonSubmit = new JButton(new AbstractAction("Submit"){ 

     public void actionPerformed(ActionEvent e){ 
      try { 
       check((int)(engine.eval(expression))); 
      } catch (ScriptException e1) { 
      } 

      buttonNext.setEnabled(true); 
      setEnabled(false); 

     } 

    }); 

    buttonNext = new JButton(new AbstractAction("Next Question"){ 

     public void actionPerformed(ActionEvent e){ 
      setQuestionArithmetic(); 
      answer.setText(""); 
      correct.setText(""); 

      buttonSubmit.setEnabled(true); 
      setEnabled(false); 
     } 
    }); 

    buttonNext.setEnabled(false); 

答えて

3

このsetEnabled(false);では、ボタンではなくアクションを無効にします。 actionPerformedメソッドのボタンを無効にしてみてください。

buttonSubmit = new JButton(new AbstractAction("Submit"){ 

    public void actionPerformed(ActionEvent e){ 
     try { 
      check((int)(engine.eval(expression))); 
     } catch (ScriptException e1) { 
     } 

     buttonNext.setEnabled(true); 
     buttonSubmit.setEnabled(false); 

    } 

}); 

buttonNext = new JButton(new AbstractAction("Next Question"){ 

    public void actionPerformed(ActionEvent e){ 
     setQuestionArithmetic(); 
     answer.setText(""); 
     correct.setText(""); 

     buttonSubmit.setEnabled(true); 
     buttonNext.setEnabled(false); 
    } 
}); 

buttonNext.setEnabled(false); 
関連する問題