2016-10-04 2 views
-3

내가 만든 일부 JButton에 actionListener가 배치되었습니다. 사용자가 버튼을 클릭하면 다른 클래스가 호출됩니다.버튼의 기능이 완료되었음을 감지합니다.

Quest.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent iq) { 

     JButton source = (JButton) iq.getSource(); 

      if (point.equals(points.get(0))){ 

     q1 = new Quest1(); //class called up 
     source.setEnabled(false); 

     //This is where my problem lies.... I want to be able to detect when the button's action is finished...than some other action takes place! 
} 
}); 

저를 도와주세요 .....

+0

그건 그렇고 ... 추론하지 않고 사람들을 하향보고! –

+2

질문이 실제로 정확하지 않기 때문에 사람이 downvote; 거의 당신이 무엇을 요구하고 있는지 불투명합니다. 이해해주세요 : 입력 품질에 대해 * 모든 * downvote 또는 닫기 요청이 ** 피드백 **으로 표시되어야합니다. – GhostCat

+0

버튼에 등록 된 다른 작업이 있는지 여부를 감지하고 모든 작업이 완료 될 때까지 기다리는 작업입니까? – erickson

답변

3

이미 코드를 작성했습니다. 당신이 추가 노력에 넣어하지 않는

당신은, 다른 방법을 호출하는 방법을 참조하십시오 (이 경우처럼을 : 다른 객체를 생성하는 새로운 사용) 순서에 을 일을!

의미 : 청취자의 마지막 줄에 ( 이후)이 표시됩니다. 다른 모든 사항이 발생했습니다.

유일한

이 알고있을 : 퀘스트의 생성자가 생성하고 다른 스레드을 시작 될 경우, 다음 물론, 상황이 다른 것입니다. 그런 다음 관련된 스레드간에 수작업으로 의사 소통해야합니다. 그러나 나는 어떻게 든 이것이 이것이 여기에 해당하지 않는다고 추측한다.

+0

이것은 정답입니다 ... 어딘가에 다른 스레드를 돌리고 있지 않으면 메서드가 다음 줄에서 수행됩니다. –

+0

정확히 !! .... 나는 다른 클래스를 어딘가에 불러 왔습니다 ... 그리고 그 클래스가 실행을 마쳤 으면 탐지하고 싶습니다. 그러면 다른 것이 발생합니다! –

+0

정확히 무슨 뜻입니까? 다른 스레드를 시작 하시겠습니까, 그렇지 않습니까? 다른 클래스를 인스턴스화하는 것은 본래 다른 스레드에서 실행되지 않습니다. 모든 코드는 위에서 아래로 실행됩니다. –

0

왜 그냥 전화를하지 않는다 : 그 클래스가 그 기능을 완료하면 더 명확하게하기 위해 ... 감지하려면, 여기 내 코드입니다 거기 방법?

Quest.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent iq) { 
    JButton source = (JButton) iq.getSource(); 
    if (point.equals(points.get(0))){ 
     q1 = new Quest1(); //class called up 
     source.setEnabled(false); 
    } 
    onButtonActionDone() 
}); 

private void onButtonActionDone() { 
    ... 
} 
+0

버튼의 동작이 완료되면 감지되도록하려고합니다! –

+0

아, 그래. 그것을 반영하기 위해'onButtonActionDone()'을 단지 움직였다. –

+0

부울 값을 변경하고 해당 변경 사항을 확인할 수 있습니다. –

1

boolean completedtrue으로 변경 한 다음 확인하십시오.

+0

죄송합니다 : 그가 멀티 스레딩을하지 않으면 완전히 쓸모가 없습니다. 멀티 스레딩을 할 때 상황이 훨씬 어려울 수 있습니다. 그럼에도 불구하고; 당신의 대답은 많이 도움이되지 않습니다.엄지 손가락의 규칙으로, 단 하나의 문장을 구성하는 대답 **은 결코 좋은 답을 만들어 내지 못합니다. – GhostCat

+0

왜 그는 이벤트에 필요한 코드를 넣지 않습니까? 나는 그것이 그가 완료되었거나 현재 실행 중이 아닌지 확인하기를 원한다고 가정합니다. –

+0

이것은 또한 이벤트가 GUI 스레드에서 실행되는 mulithreaded입니다. –

관련 문제