2017-11-28 19 views
-1

EclipseプラグインのウィザードページにscrolledCompositeを追加したいと思います。私はscrolledCompositeを実装したFirstPageですべてうまく動作します。問題は、その後に表示されるSecondPageが空白であることです。 FIRSTPAGEためEclipse JFace WizardPageでSWT ScrolledCompositeを使用

初期化コード:

public void createControl(Composite parent) { 

     ScrolledComposite scroll = new ScrolledComposite(parent, SWT.NULL | SWT.V_SCROLL); 
     scroll.setLayoutData(new GridData(GridData.FILL_VERTICAL)); 

     scroll.setAlwaysShowScrollBars(false); 
     scroll.setExpandVertical(true); 
     scroll.setExpandHorizontal(true); 

     scroll.setMinHeight(500); 
     scroll.setLayout(new GridLayout(1, false)); 

     Composite container = new Composite(scroll, SWT.NULL);  
     GridLayout layout = new GridLayout(); 
     container.setLayout(layout); 
     scroll.setContent(container); 


    setControl(container); 
    setPageComplete(false); 
} 

SecondPageのCreateControlコードが標準ですが、私はまた、スクロールだろう親を、見つけるために、試してみました - 私はそれが「入れ子になった」ScrolledCompositeの問題だろうと思わ - そのように:

ScrolledComposite scroll = null; 
if(parent.getChildren() != null && parent.getChildren().length > 1 && parent.getChildren()[1] instanceof ScrolledComposite) { 
    scroll = (ScrolledComposite)parent.getChildren()[1]; 

} 

    scroll.setLayoutData(new GridData(GridData.FILL_VERTICAL)); 
    Composite container = new Composite(scroll, SWT.NULL); 
    scroll.setContent(container); 
    scroll.setAlwaysShowScrollBars(false); 
    scroll.setExpandVertical(true); 
    scroll.setExpandHorizontal(true); 

    scroll.setMinHeight(500); 
    scroll.setLayout(new GridLayout(1, false)); 


    GridLayout layout = new GridLayout(); 
    container.setLayout(layout); 
    container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

しかし、このようなアプローチは動作しません。

ScrolledCompositesと複数ページのJFaceウィザードとの統合に関する経験はありますか?

+0

最初のページと同じコードを2番目のページに使用すると効果があります。 –

答えて

0

クラス階層IDialogPage - > DialogPage - > WizardPage - > YourCustomPageが表示されている場合は、したがって、すべてのページで、Wizardによってウィザードページ全体で共有される親コンポジットの下にカスタムコンテンツを作成する必要があります。

しかし、最初のページに固有で、2番目のウィザードページと共有できないコンテンツ要素であるこのルートコンポジットの上にScollableCompositeを追加しています。

したがって、2番目のページに新しいScollableCompositeを作成し、内容を別々に追加する必要があります。 2番目のページで同じScollableCompositeのコンテンツを更新しようとすると、戻るボタンをクリックするとコンテンツが最初のページに更新されません。 getPreviousPage()が呼び出されたときにcreateContent()が呼び出されないためです。

0

解決策を見つけましたが、私はそれを認めなければなりません。非常にばかげたエラーでした。 setControl(container);setControl(scroll);に変更すれば十分です。これですべてのページが正しく表示されます。次のようなことに気をつけてください:)

関連する問題