我有一个带有3个WizardPages的向导,每个页面都有小部件来保存用户的输入,我需要添加最后一页,保存用户输入的所有信息。
我不知道该怎么做,因为4页是同时创建的。
Public Wizard(){
addPage(new Page1()) ;
addPage(new Page2()) ;
addPage(new Page3()) ;
addPage(new PageSummary()) ;
}
如何根据前几页输入内容更改PageSummary Controls?
编辑:
我找到了a post,这正是我想要的,使用onEnterPage()
方法看起来很聪明,以下是我试过的方法:
public class NewEquipementSummaryPage extends WizardPage {
public void createControl(Composite parent) {
// composite to hold widgets
Composite composite = new Composite(parent, SWT.NONE) ;
// composite layout
GridLayout gl = new GridLayout(2, false) ;
composite.setLayout(gl) ;
// making widgets
createWidgets(composite) ;
setControl(composite) ;
}
public void onEnterPage() {
TypeEquipementPage typePage = (TypeEquipementPage) getWizard().getPage(TypeEquipementPage.PAGE_NAME) ;
CompanySellerPage companyPage = (CompanySellerPage) getWizard().getPage(CompanySellerPage.PAGE_NAME) ;
EquipementUserPage userPage = (EquipementUserPage) getWizard().getPage(EquipementUserPage.PAGE_NAME) ;
if(typePage.types[0].getSelection() == true)
typeEquipementLabel.setText("Poste de travail") ;
else
typeEquipementLabel.setText("Peripherique") ;
marqueEquipementLabel.setText(typePage.marquesCombo.getText()) ;
descriptionEquipementLabel.setText(typePage.descriptionField.getText()) ;
if(companyPage.companyExistButton[0].getSelection() == true) {
companyNameLabel.setText(companyPage.companiesCombo.getText()) ;
}
else{
companyNameLabel.setText(companyPage.companyNameField.getText()) ;
companyAdressLabel.setText(companyPage.companyAdressField.getText()) ;
companyNumberLabel.setText(companyPage.companyNumberField.getText()) ;
}
if( !(userPage.sharedEquipementButton.getSelection()) )
useOfEquipementLabel.setText("Utilisateur") ;
else
useOfEquipementLabel.setText("Bureau") ;
pack() ;
}
最后使用pack()方法,编译时出错(找不到符号)
没有它,页面上没有任何内容..我错过了什么?
答案 0 :(得分:3)
尝试覆盖DialogPage#setVisible
中的NewEquipementSummaryPage
并从那里致电onEnterPage
:
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible) {
onEnterPage();
}
}
(以及按照SoboLAN的回答中的建议更改为composite.pack()
)
答案 1 :(得分:0)
我认为您需要composite.pack ()
,而不仅仅是pack ()
。为此,请将composite
变量存储为您班级中的private
字段(以便您可以使用onEnterPage
方法对其进行访问。)