2016-01-23 36 views
0

我是JFace中的新成員,並且正在測試其某些組件。
現在我對使用不同方法顯示模態窗口感到困惑。
比如我有一個按鈕的應用程序,並希望通過單擊此按鈕可以打開一個對話框:哪個Shell對象是構建JFace對話框的正確對象

public class TestApp extends ApplicationWindow { 
    protected Control createContents(Composite parent) { 
    Button button1 = new Button(parent, SWT.PUSH); 
    button1.setText("Open"); 
    button1.addSelectionListener(new SelectionAdapter() { 
     public void widgetSelected(SelectionEvent e) { 
     MyDialog myDialog = new MyDialog(...); 
     myDialog.open(); 
     } 
    }); 
    } 
} 

現在它的殼牌對象我必須分配給對話框構造的問題。
對於我發現了以下方案:

new MyDialog(getShell()); 
new MyDialog(parent.getShell()); 
new MyDialog(new Shell()); 

但哪一個是正確的或最常見?差異在哪裏?

回答

0

您應該使用當前對話框/窗口,這樣的外殼:

new MyDialog(getShell()); 

是你通常用什麼。

這會使新對話框成爲當前窗口的子項。所以如果關閉窗口,對話框也會關閉。