2011-12-07 3 views
1
나는 (시간이 표시됩니다), 메인 스레드에서 동안은, 함수가 실행됩니다 다른 스레드의 JDialog를을 만들

를 응답하지 않습니다 JDialog를 ..

나는 대화 상자를 만들

, 그것은 표시이지만 "붙어"입니다 ... 그리고 내가 구성 요소를 ... 볼 수없는 메인 스레드 마무리의 기능은

- 대화가 제대로 표시됩니다 ..

방법 고칠 수 있을까요?

+0

작성 방법에 대한 코드를 추가하십시오. –

+3

더 많은 코드가 필요하지만, Swing과 관련된 모든 것이 이벤트 발송 스레드 (Swing EDT)에서 실행되어야한다는 것을 알지 못한다고 생각합니다. – toto2

답변

1

전화 SwingUtilities.invokeLater 내부의 JDialog를 작성 또는 invokeAndWait의

1

당신은 엽니 다 AWT 이벤트 큐를 사용해야합니다. 그냥

java.awt.EventQueue.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      editFace(); 
     } 
    }); 
editFace()는 코드가 포함되어

를 시작, 일할 수있는 JFrame의 메뉴와 가속기에 대한 또 다른 스레드에서 얼굴 편집기를 시작해야 내 지식

에 작동하지 않는 별도의 스레드에서 퍼팅 새 프레임을 표시하십시오

  Viewer2D v = new Viewer2D(this); 
      this.addFaceEditor(FaceToEdit, v); 
      v.DrawFace(FaceToEdit); 
      v.showAndRaise();