Java 如何强制Eclipse中JFace向导的最小高度?
我演示的向导(代码)太低,因此内容无法完全显示(请参见下面的屏幕截图): 如何强制向导具有最小高度 根据上的回答,向导的高度将与向导中最大的向导页面的高度相同,但我的向导显然没有根据最大页面的内容调整大小,并且我还尝试使用wizardpage类中的以下代码设置第一个可见向导页面的最小高度: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
@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)代码>