gpt4 book ai didi

java - 打开对话框时,SWT 小部件不会显示在向导中

转载 作者:行者123 更新时间:2023-12-01 22:00:10 25 4
gpt4 key购买 nike

我创建了一个只有一页的向导,有两个小部件:一个列表和一个按钮但是,当使用 dialog.open() 调用向导时,向导会打开,但不会显示页面的小部件。我不知道出了什么问题!

这是页面的代码

public class SelectCriterionPage extends WizardPage  {

private Composite container;
ArrayList<String> listItems=new ArrayList<String>();
List variables,selected;
protected SelectCriterionPage() {

super("CriterionSelection","SelectCriterionPage",null);

setTitle("Selection of criterion variables");



}
@Override

public void createControl(Composite parent) {

container = new Composite(parent, SWT.NONE);
variables=new List(container, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
//fill the list with variables
for(String item:listItems)
variables.add(item);

variables.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {


}

@Override
public void widgetDefaultSelected(SelectionEvent e) {
// TODO Auto-generated method stub

}
});
Button btn=new Button(container, SWT.PUSH);
btn.setText("<");
GridData gr=new GridData(GridData.FILL,SWT.CENTER);
btn.setLayoutData(gr);
setControl(container);

}
}

我调用我的向导

WizardDialog dialog = new WizardDialog(null, new       SelectSlicingCriterionWizard());
dialog.open();

这是我的向导:

public class SelectSlicingCriterionWizard extends Wizard{
IWorkbenchPage workbench;
IStructuredSelection selection;
ArrayList<String> listItems;

public SelectSlicingCriterionWizard() {

super();

setNeedsProgressMonitor(true);

}


@Override
public boolean performFinish() {
System.out.println("Finish clicked");
return true;
}

@Override
public boolean performCancel(){
return true;
}

@Override

public void addPages() {
SelectCriterionPage criterionpage=new SelectCriterionPage();
addPage(criterionpage);
}
@Override

public String getWindowTitle() {

return "Select Criterion Variables";

}
public void init(IWorkbench workbench, IStructuredSelection selection)
{
this.workbench=workbench.getActiveWorkbenchWindow().getActivePage();
this.selection=selection;
}
}

最佳答案

您尚未为向导页面Composite 设置布局。由于您似乎正在尝试使用网格,因此应该是:

container = new Composite(parent, SWT.NONE);

container.setLayout(new GridLayout());

按钮的 GridData 使用了错误的构造函数(两个参数构造函数设置高度和宽度)。使用类似的东西:

GridData gr = new GridData(SWT.BEGINNING, SWT.TOP, false, false);

btn.setLayoutData(gr);

关于java - 打开对话框时,SWT 小部件不会显示在向导中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33664696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com