1

WizardPagesが3つあるウィザードがあり、各ページにはユーザーからの入力を保持するウィジェットがあります。最後のページを追加して、ユーザーが入力したすべての情報を保持する必要があります。

4ページが同時に作成されるので、その方法がわかりませんでした。

Public Wizard(){
    addPage(new Page1()) ;
    addPage(new Page2()) ;
    addPage(new Page3()) ;
    addPage(new PageSummary()) ;

}

前のページに入力した内容に応じて、PageSummaryコントロールを変更するにはどうすればよいですか?

編集:私は私が望むことを正確に行う投稿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()メソッドを使用すると、コンパイルでエラーが発生します(シンボルが見つかりません)

そしてそれなしではページに何も表示されません..私は何を逃しましたか?

4

2 に答える 2

3

オーバーライドDialogPage#setVisibleして、そこからNewEquipementSummaryPage呼び出してみてください。onEnterPage

public void setVisible(boolean visible) {

    super.setVisible(visible);

    if (visible) {

        onEnterPage();
    }
}

composite.pack()( SoboLANの回答で提案されているように変更するだけでなく)

于 2012-08-20T16:26:17.847 に答える
0

composite.pack ()だけでなく、あなたが欲しいと思いますpack ()。これを行うには、composite変数をprivateクラスのフィールドとして格納します(メソッドでアクセスできるようにしますonEnterPage)。

于 2012-08-17T12:58:57.090 に答える