2013-10-05 3 views
1

결과에 따라 버튼을 활성화하면 : 활성화 할체크 이벤트는 사실 내가 다음 코드 한

timeLeftFinished = false; 
    boolean agreed = jCheckBox1.isSelected(); 
    ActionListener taskPerformer = new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      timeLeftFinished = true; 
     } 
    }; 
    Timer timer = new Timer(0, taskPerformer); 
    timer.setInitialDelay(5000); 
    timer.setRepeats(false); 
    timer.start(); 
    while (timeLeftFinished == true && agreed == true) { 
     jButton3.setEnabled(true); 

내가 jButton3을 부탁을 모두 timeLeftFinishedagreed에 해당하는 경우 어떻게하면 체크 가야합니까 Both가 true이면 둘 다 true이고 jButton3 만 활성화합니까?

사이드 노트 : Netbeans Gui Builder를 사용하고 있습니다. IDE에서 이벤트를 바인딩하는 코드를 생성 할 수 있습니까?

ActionListener을 생성하면 매 초마다 실현 가능한지 확인할 수 있습니까?

, 아무것도 발생하는 것은 매우 드문
+0

bool에 getter/setter를 넣고 jButton3을 true/off로 설정하는 getters/setters에 일부 논리를 추가하는 것이 좋습니다. . –

답변

2
확인 및 체크 박스와 타이머 모두 별개의 상태를 모니터링해야

...

jCheckBox1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
     agreed = jCheckBox1.isSelected(); 
     updateState(); 
    } 
}); 
//... 
ActionListener taskPerformer = new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 
     timeLeftFinished = true; 
     updateState(); 
    } 
}; 
Timer timer = new Timer(0, taskPerformer); 
//... 

protected void updateState() { 
    jButton3.setEnabled(timeLeftFinished && agreed); 
} 

, 당신은 이벤트 구동 환경에서 작업 기억이다 선형 방식으로

또한 UI는 자신의 단일 스레드 내에서 작동합니다. UI 상태에 대한 모든 상호 작용 및 수정은이 스레드의 컨텍스트 내에서 발생할 것으로 예상됩니다. 이 스레드가 실행되는 것을 중지시키는 작업 (예 : 긴 실행 루프 사용)을 수행하면 이벤트 발송 스레드가 새 이벤트 (다시 칠하기 요청 포함)를 처리 할 수 ​​없으므로 루프가 끝나지 않을 가능성이 높아지고 프로그램이 중단 된 것처럼 보일 것입니다. 왜냐하면 기본적으로 ...

+1

@HovercraftFullOfEels 나, 동의했다면, 내 것이 야.> – MadProgrammer

+0

LOL. 나는 미쳤지 만 미쳤다. –