2017-12-14 22 views
0

SWT MessageDialog (예 : 처음에는 모든 창 상단에있는 질문)을 만들고 싶습니다.SWT 온 톱 메시지 대화 상자 만들기

첫 아이디어는 Shell입니다. 스타일이 ON_TOPShell을 만들 수 있습니다. 그러나 MessageDialog 메서드를 사용하면 부모 셸을 설정할 수 있습니다. MessageDialog이 열리는 창의 스타일을 어떻게 설정할 수 있습니까?

+0

문제의 몸이 'AWT'포함하고 그것은 또한 [태그 : AWT]로 태그있어 아직 모두'MessageDialog'과'Shell'을 API는 ** [tag : swt] **의 일부입니다. 무엇 이니? 그 질문을 일단 이해하면 [편집]하십시오. –

+0

셸 생성을 시도하고 대화 상자 부모 셸을 설정 했습니까? – tkotisis

+0

@ tkotisis. 나는 그랬다. 결과는 Linux와 Windows의 차이점이었습니다. 특히, 질문 창과 함께 Linux에 빈 창을 열었습니다. –

답변

0

당신은 Dialog 클래스를 서브 클래스 화해와 setShellStyle(int newShellStyle) 메서드를 호출해야합니다

public class OnTopDialog extends MessageDialog { 

    public OnTopDialog(Shell parentShell, String dialogTitle, Image dialogTitleImage, String dialogMessage, int dialogImageType, int defaultIndex, String[] dialogButtonLabels) { 
     super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, defaultIndex, dialogButtonLabels); 
     setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.ON_TOP); 
    } 

} 
+0

불행히도 MessageDialog의 open() 메소드가 새로운 MessageDialog 객체를 생성하기 때문에 작동하지 않습니다 따라서 새로운 생성자는 사용되지 않습니다. 게다가 open()은 모든 셸 스타일을 제거하지만 JavaDoc에서 언급 한 두 가지 스타일은 제거합니다. 따라서 모든 것을 다시 구현해야합니다. –

+0

open() 메서드는 새 대화 상자를 만들지 않습니다. static open (...) 메소드를 참조하고 있습니다. 왜 그것을 사용해야하는지 잘 모르겠습니다. – tkotisis

+0

비슷한 편의 메소드가 필요한 경우에도, 다시 구현해야하는 것은 open (...) 메소드뿐입니다. – tkotisis