문제

스윙에서 새로운 이벤트 디스패치 스레드를 만들고 싶습니다.이 작업을 수행하는 방법에 대한 온라인 참조를 찾는 데 어려움이 있습니다. 새 스레드를 만들고 Application.Run (...)을 호출하여 .NET 에서이 작업을 수행했습니다. 누구든지 이것을 한 사람이 있습니까? 스윙에서 가능합니까?

참고 로이 작업을 수행하려는 이유는 Eclipse 플러그인을 작성하고 있기 때문에 IDE에 대한 모달이 아니라 UI 논리에 대한 모달 (차단) 인 대화 상자를 팝업하고 싶습니다. 비 모달 대화 상자와 콜백을 사용하여 이것을 달성 할 수 있지만 코드를 멀티 스레드로 만드는 오버 헤드가 필요합니다. 전자가 불가능하다면 복귀하겠습니다.

도움이 되었습니까?

해결책

예, 가능합니다. 스윙에서 이러한 여러 EDT 디스패치 스레드 로직을 수행했습니다. 그러나 순 결과는 안정적으로 작동하지 않았다는 것입니다.

(a) 모든 JVM은 여러 EDT 스레드와 잘 어울리지 않습니다 (그래픽 렌더링 로직에서의 동기화 문제 및 IBM JVM은 여러 EDT 스레드에서 실패했으며 Sun JVM & Apple JVM이 작동했습니다).

(b) 스윙 렌더링 로직에는 버그가 거의 없어 임의의 렌더링 오류가 발생할 수 있습니다 (예 : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6727829).

어쨌든이 작업을 수행하려면 기본적으로 각각 고유 한 EDT 스레드가있는 두 개의 AppContexts를 설정해야합니다.

다른 팁

스윙을 언급하지만 이클립스 플러그인을 쓰고 있다고 말하기 때문에 나는 당신의 질문에 약간 혼란스러워합니다. 질문은 스윙에 태그가 지정되어 있으므로 스윙 답변을 줄 것입니다 (그러나 CW로 게시 됨).

하나의 이벤트 디스패치 스레드가 있습니다. 전혀 없다면 항상 하나의 이벤트 디스패치 스레드가 있습니다. 당신은 다른 것을 만들 수 없습니다.

그러나 당신은 그것을 바꿀 수 있습니다 ModalityType 대화의 또는 변경 ModalExclusionType 창의. 이 경우, 당신 이이 모든 것을 직접 작성하는 경우, 당신은 당신의 최상위 창을 설정할 것입니다. ModalExclusionType 에게 APPLICATION_EXCLUDE.

그러나 Eclipse는 스윙 대신 SWT를 사용하기 때문에 이것이 어떻게 도움이 될 수 있는지 알 수 없습니다.

나는 나의 마지막 대답을 쓰러 뜨리고 새로 시작할 것입니다.

SWT에서는 만들 수 있습니다 ShellS (Windows) 또는 사용자 정의 Dialog생성 중에 swt.primary_modal 스타일 플래그를 통과시켜 부모에게 모달 인 s.

주목하십시오 Dialog 추상적 인 수업이므로 직접 만들어야합니다. 사용하기가 더 쉽습니다 Shell.

편집하다:

왜 swt인가? 그것은 이클립스가 사용하는 것이기 때문입니다. 보다: Eclipse 플랫폼 플러그인 개발자 가이드 자세한 내용은 (ZIPPER PDF). 가장 최근 버전은 Eclipse의 도움말 시스템 (Help> Help Contents> Plug-In Development Environment Guide에서 사용할 수 있습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top