2012-05-15 70 views
0

我想禁用按鈕最大化/最小化,下面我發佈的圖像來解釋禁用窗口上的JFace WizardPage調整

enter image description here

這是我的代碼:

public class ProjectWizardPageOne extends WizardPage { 

private String platform; 

public ProjectWizardPageOne(String title) { 
    super(title); 
    this.setTitle(title); 
    this.setMessage("Configure Project Name and Location"); 
} 

@Override 
public void createControl(Composite parent) { 
    Composite container = new Composite(parent,SWT.NONE); 
    setPageComplete(false); 
    setControl(container); 

    Canvas leftPanel = new Canvas(container, SWT.NONE); 
    leftPanel.setBackgroundImage(new Image(leftPanel.getDisplay(), this 
      .getClass().getClassLoader() 
      .getResourceAsStream("/icons/mypicture.png"))); 
    leftPanel.setBounds(0, 0, 183, 282); 

    Composite rightContainer = new Composite(container, SWT.NONE); 
    rightContainer.setBackground(new Color(null, 255, 255, 255)); 
    rightContainer.setBounds(181, 0, 399, 282); 
} 

public String getPlatform() { 
    return platform; 
} 

public void setPlatform(String platform) { 
    this.platform = platform; 
} 
} 

我試着像這樣獲取Composite的Shell「container.getShell();」 但我不明白如何設置這些參數「SWT.SHELL_TRIM | SWT.TOOL」! 謝謝

回答

1

它是一個文件 - >新建嚮導或以編程方式啓動的自定義嚮導。如果它是自定義的,你將不得不創建WizardDialog,然後將Wizard實例傳遞給它。創建WizardDialog時,您還可以創建Shell,爲此您可以在不使用SWT.RESIZE的情況下發送參數。對於文件 - >新建,因爲對話不是由你創建的,我不認爲你可以在那裏控制調整大小的選項。 resize只能在Shell的構造函數中傳遞。

+0

感謝您的重播。嚮導是自定義的。正如你從我的代碼中看到的,我已經創建了'ProjectWizardPageOne',並且從這裏調用了這個類'public class NewMyProjectWizard extends Wizard實現了INewWizard {ProjectWizardPageOne projectWizardPageOne; public NewMyProjectWizard(){super(); setNeedsProgressMonitor(真); } public void init ... public boolean performFinish ... public void addPages(){projectWizardPageOne = new ProjectWizardPageOne(「New My Project」); addPage(projectWizardPageOne); }}'我不使用WizardDialog。 – ImLearning

+0

你的嚮導是如何啓動的? – Ravi

+0

嚮導通過plugin.xml中推出 ' <擴展點= 「org.eclipse.ui.newWizards」> <! - 根類別 - > <類別 ID = 「root_category_project」 名稱=「我的項目種類 「> <嚮導 ID =」 MY_PROJECT 「 名稱= 」我的項目「 類別 = 」root_category_project「 圖標=」 ./圖標/ MyIcon.png 「 類=」 my.project.wizards。 NewMyProjectWizard「 project =」true「> \t ' – ImLearning

1

在對話框的情況下,我觀​​察到我需要明確指定我需要在右上角的最小,最大按鈕。對於我需要調用以下方法在一個構造:

setShellStyle(getShellStyle() | SWT.MAX | SWT.MIN | SWT.RESIZE); 

由於嚮導也是一個對話框,我可以調用上述方法來重置shellStyle不包括最大值,最小值,以及其他按鈕(見上文碼)。該向導默認可能會添加這些按鈕。但我認爲你可以通過在嚮導創建結束時回顧它來覆蓋它。希望這可以幫助。

+0

嗨阿斯拉姆感謝您的重播。 我必須把你的代碼行放在哪裏? – ImLearning

2

控制Window/Shell不是WizardPage的責任,它不能這樣做。這是WizardDialog或創建它的代碼的責任。實際上,我們無法保證Wizard及其WizardPage甚至會被包含在WizardDialog;任何東西都可以實現IWizardContainer界面,以不同的方式呈現嚮導。

+0

感謝您的回覆,下面是創建嚮導頁面的代碼。 '公共類NewMyProjectWizard擴展嚮導實現INewWizard { \t ProjectWizardPageOne projectWizardPageOne; \t public NewMyProjectWizard(){ \t \t super(); \t \t setNeedsProgressMonitor(true); \t} \t public void init ... \t public boolean performFinish ... \t public void addPages(){ \t \t projectWizardPageOne = new ProjectWizardPageOne(「New My Project」); \t \t addPage(projectWizardPageOne); \t} }' 你能解釋一下我爲了獲得目標而必須修改嗎? 非常感謝 – ImLearning

1
public class InstallerWizard extends Wizard{ 
... 
main() 
{ 
WizardDialog dialog = new DisableMax(shell, new InstallerWizard()); 
dialog.open(); 
} 

} 公共類DisableMax擴展WizardDialog {

public DisableMax(Shell parentShell, IWizard newWizard) { 
     super(parentShell, newWizard); 
     setShellStyle(SWT.CLOSE | SWT.MIN | SWT.RESIZE | getDefaultOrientation()); 
    } 
}