2014-11-13 2 views
2

내 응용 프로그램에서 해당 생성자에서 shell 인수를 사용하는 WizardDialog JF를 팝업하고 싶습니다. WizardDialog 생성자에 전달되어야하는 셸

나는 2 개 가지 방법으로 쉘을 받고 시도 : 그들은 좋은 모달 대화를 만든 이후

  1. Shell shell = new Shell(display);

  2. Shell shell = display.getActiveShell();

두 가지 방법이, 잘 작동하는 것 같았다. 제 질문은 어느 것이 맞습니까?

새로운 쉘을 인스턴스화하는 것이 합리적이지만, 활성 쉘이 작동하는 이유는 무엇입니까?

답변

1

WizardDialog에 전달 된 셸의 부모 셸입니다. 예를 들어 대화 상자가 표시 될 모니터를 제어합니다. 상위 쉘은 대화 상자 수명주기에 영향을 미칩니다. 상위 쉘이 닫히면 하위 쉘도 모두 닫힙니다 (아래 참조).

대화 상자는이 셸을 사용하여 내용을 생성하지 않으므로 새 셸이 만들어집니다.

따라서 새 셸을 만들지 않고 기존 셸을 사용해야합니다. 대부분의 경우 display.getActiveShell()에서 사용할 수 있지만 잘 알려진 쉘을 사용하는 것이 좋습니다.

Eclipse Workbench 응용 프로그램 (RCP 또는 Eclipse IDE 플러그인)에서 대화 상자를 열 때 발생할 수있는 함정은 다음과 같습니다. display.getActiveShell() 마법사가 열릴 때 진행 상황 모니터 대화 상자를 리턴 할 수 있습니다 진행보고가 완료되면 예기치 않게 마법사 대화 상자를 닫습니다. 활성 워크 벤치 창은 일반적으로 여기 좋은 대안입니다.