Java 如何强制Eclipse中JFace向导的最小高度?

Java 如何强制Eclipse中JFace向导的最小高度?,java,swt,eclipse-rcp,jface,Java,Swt,Eclipse Rcp,Jface,我演示的向导(代码)太低,因此内容无法完全显示(请参见下面的屏幕截图): 如何强制向导具有最小高度 根据上的回答,向导的高度将与向导中最大的向导页面的高度相同,但我的向导显然没有根据最大页面的内容调整大小,并且我还尝试使用wizardpage类中的以下代码设置第一个可见向导页面的最小高度: @Override public void createControl(Composite parent) { // create the composite to hold the widgets

我演示的向导(代码)太低,因此内容无法完全显示(请参见下面的屏幕截图):

如何强制向导具有最小高度

根据上的回答,向导的高度将与向导中最大的向导页面的高度相同,但我的向导显然没有根据最大页面的内容调整大小,并且我还尝试使用wizardpage类中的以下代码设置第一个可见向导页面的最小高度:

@Override
public void createControl(Composite parent) {
  // create the composite to hold the widgets
  Composite composite =  new Composite(parent, SWT.NULL);
  composite.setSize(300, 1024); // TODO: Does this work?

  GridData gridData = new GridData(300, 1024);
  gridData.heightHint = 1024;
  gridData.minimumHeight = 1024;
  composite.setLayoutData(gridData);
。。。但到目前为止还没有成功


有提示吗?

您可能需要为GridData指定高度提示

或者,您可以使用三列GridLayout并获取第一列之后的所有行,以跨越第2列和第3列。我倾向于使用GridLayout,以前从未遇到过这个问题。

尝试设置

parent.setLayout(new GridLayout());
到第一页的
createControl()
实现

您在该方法中得到的父级似乎有一个
PageContainerFillLayout
的实例作为布局,而不是
GridLayout

如果您有权访问向导对话框,也可以调用

wizardDialog.setMinimumPageSize(300, 1024)

您可以使用以下代码:

parent.addControlListener(新的ControlAdapter(){
公共无效控件已调整大小(ControlEvent事件){
parent.setSize(parent.computeSize(490320));
}

});

我刚刚遇到了一个非常类似的问题(在Windows上):向导页面上没有消息的向导没有完全显示出来。我很快就解决了这个问题,只需在向导页面构造函数中添加一条带有单个空格的消息:

class Page extends WizardPage {

    Page() {
        super("page.id", "Page title", null);
        setMessage(" ");

接受的答案对我不起作用(向导有很多字段)。

您是否尝试过覆盖向导中的createPageControls(空块)?谢谢,但不幸的是,没有帮助。顺便说一句,请注意,这是WizardPage类,而不是Wizard类。是的,正如您在上面的代码中所看到的,我确实为GridData设置了高度提示。。。但它仍然不起作用。我真的不明白为什么…你就是这么做的。这是漫长的一天,我一定错过了;我成功了!非常感谢!事实上,第二个例子效果更好。第一个页面让我感到奇怪,比如第二个页面的内容垂直居中。不过,为了从
WizardPage
抓取
WizardDialog
,我不得不进行一些转换,但它工作得非常好:
((WizardDialog)this.getWizard().getContainer()).setMinimumPageSize(300400)