를 응답하지 않습니다 JDialog를 ..
나는 대화 상자를 만들
, 그것은 표시이지만 "붙어"입니다 ... 그리고 내가 구성 요소를 ... 볼 수없는 메인 스레드 마무리의 기능은 - 대화가 제대로 표시됩니다 ..방법 고칠 수 있을까요?
를 응답하지 않습니다 JDialog를 ..
나는 대화 상자를 만들
, 그것은 표시이지만 "붙어"입니다 ... 그리고 내가 구성 요소를 ... 볼 수없는 메인 스레드 마무리의 기능은 - 대화가 제대로 표시됩니다 ..방법 고칠 수 있을까요?
Swing EDT에서 큰 작업을 실행하는 경우 모든 Swing 페인팅이 발생하는 스레드이므로 UI 요소가 다시 칠되는 것을 차단합니다.
이 문제를 해결하는 유일한 방법은 별도의 스레드에서 큰 작업을 실행하는 것입니다. SwingWorker
클래스로 봐 : http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
전화 SwingUtilities.invokeLater 내부의 JDialog를 작성 또는 invokeAndWait의
당신은 엽니 다 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();
작성 방법에 대한 코드를 추가하십시오. –
더 많은 코드가 필요하지만, Swing과 관련된 모든 것이 이벤트 발송 스레드 (Swing EDT)에서 실행되어야한다는 것을 알지 못한다고 생각합니다. – toto2