2015-11-12 9 views
0

Я создал мастер с одной страницей и имеет два виджета: список и кнопку , но при вызове мастера с помощью dialog.open() открывается мастер, но виджеты страницы не отображаются. Я не знаю, что не так!SWT Виджеты не отображаются в Мастере при открытии диалога

Вот код страницы

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; 
} 
} 

ответ

2

Вы не установили макет для мастера страница 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); 
+0

работает как шарм, благодаря – user3299062

1

Вам необходимо установить макет для вашего композитного материала. Для примеров использования GridLayout см - https://www.eclipse.org/swt/snippets/#gridlayout

Для примера по использованию GridLayout в WizardPage, смотрите - http://git.eclipse.org/c/platform/eclipse.platform.ui.git/tree/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/wizard/Snippet047WizardWithLongRunningOperation.java

 Смежные вопросы

  • Нет связанных вопросов^_^