2011-11-28 6 views
0

3D 그래프 용 코드를 작성 중이며 사용자가 JButton을 누르면 장면 그래프가 업데이트되기를 원합니다. Behavior 클래스를 사용하려고하지만 swing 이벤트를 사용하여 동작을 깨우는 데 필요한 정보를 찾을 수 없습니다. 어떤 도움을 주셔서 감사합니다! 고맙습니다!!Swing 이벤트와 동작 클래스를 사용하는 방법?

답변

0

Runnables 큐가 포함 된 특수한 비헤이비어 개체를 사용할 수 있습니다. 그런 다음 행동에 실행 파일을 게시하고 깨울 수 있습니다. 대기열에 더 이상 명령이 없을 때 동작이 잠자기 상태가되도록 올바른 동기화를 정렬해야하지만 작동해야합니다.

SwingUtilities.invokeLater() 메소드와 유사하게 Runnable을 BehaviorScheduler 내에서 실행할 수 있도록 클래스를 싱글 톤으로 만듭니다.

public class ThreadTransferBehavior extends Behavior { 
    private final static int POST_ID = 9997; 
    private final WakeupOnBehaviorPost m_wakeupPost = new WakeupOnBehaviorPost(this, POST_ID); 

    private final Stack<Runnable> commands; 


    public synchronized void processStimulus(Enumeration i) { 
     while(!commands.isEmpty()) commands.pop().run(); 
     wakeupOn(m_wakeupPost); 
    } 

    public synchronized void queueCommand(Runnable r) { 
     commands.push(r); 
     postId(POST_ID); 
    } 
}