메인 프레임에서 자체 스레드로 생성되는 사용자 정의 JDialog
에 문제가 있습니다.JDialog가 보이지 않습니다.
때로는 JDialog
이 보이지 않지만 컨트롤이 클릭 가능합니다 (위치가 어디인지 알고있는 경우). 이 문제는 Oracle Java 1.7에서는 발생하지 않지만 Oracle Java 1.6에서는 발생합니다 (1.6.0_37 및 1.6.0_45 참조). 내 메인 프레임에서
class MyDialog extends Jdialog() {
public MyDialog(JFrame frame, boolean modal) {
super(frame, modal);
[...]
}
}
:
는이 같은 대화 상자를 만들
MyDialog dialog = new MyDialog(myMainFrame,true);
dialog.setModalityType(Dialog.ModalityType.DOCUMENT_MODAL);
dialog.setVisible(true);
예상되는 동작은 그 위에 메인 프레임과 거짓말의 MouseEvents
같은 이벤트를 차단하는 것입니다. Java 1.7에서 완벽하게 작동합니다.
JDialogs
부모 프레임 (소유자)이 표시된 후 또는 사용 된 Java JRE의 알려진 버그 일 뿐이라는 점을 염두에 두어야 할 특별한 사항이 있습니까? 벌써 오라클 here의 버그 수정 로그를 확인했지만 성공하지 못했습니다.
@subash가 제안하는대로'repaint()'또는'revalidate'를 호출 할 이유가 없어야합니다. 문제는 간헐적으로 들리며 스윙 스레딩 문제가 발생합니다. 당신은 EDT에서 모든 스윙 전화를 할 수 있도록 돌보고 있습니까? EDT에서 장기 실행 코드를 호출 하시겠습니까? 가장 좋은 점은 여기에 문제를 컴파일, 실행 및 재현하는 짧은 코드를 게시 할 수 있다면 [sscce] (http://sscce.org)입니다. –
당신이 맞습니다, SSCCE는 더 좋을 것이지만, 제 문제는 큰 코드 프로젝트에 참여하고 있습니다. 그래서 sccce는 불행히도 제 문제를 재현하지 않을 것입니다. 나는 스레딩에 문제가있는 것 같아 @Durandal 힌트가 올바른 방향으로 나를 인도한다고 생각합니다. 그것이 왜 항상 일어나는 것이 아니라 단지 때때로 일어날지를 설명 할 것입니다. JAVA 1.6/1.7 문제는 다른 디자인과 관련이있을 수 있습니다. 당신의 도움을 주셔서 감사합니다! – alex