2017-11-28 5 views
-1

Ich möchte ScrolledComposite hinzufügen, um Assistentenseite im Eclipse-Plug-in. Alles funktioniert gut auf der FirstPage, wo ich scrolledComposite implementiert habe. Das Problem ist, dass die SecondPage, die danach angezeigt wird, leer ist.Verwendung von SWT ScrolledComposite mit Eclipse JFace WizardPage

Initialisierungscode für First:

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

NochNeSeite create Code ist Standard, aber ich habe auch versucht, ein Elternteil zu finden, die eine Schriftrolle wäre - ich eigentlich wäre es Ausgabe von „verschachtelten“ ScrolledComposite sein - so:

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

aber ein solcher Ansatz funktioniert nicht.

Hat jemand Erfahrung mit der Integration von ScrolledComposites und mehrseitigen JFace-Assistenten?

+0

Verwenden Sie den gleichen Code für die zweite Seite, wie die erste Seite funktionieren sollte. –

Antwort

0

Wenn Sie die Klassenhierarchie IDialogPage -> DialogPage -> WizardPage -> YourCustomPage sehen. Daher müssen Sie für jede Seite den benutzerdefinierten Inhalt unter dem übergeordneten Verbund erstellen, der von einem Assistenten in den Assistentenseiten gemeinsam genutzt wird.

Sie fügen jedoch ScollableComposite über dieses Stamm-Composite hinzu, das in Ihrem Fall das Inhaltselement ist, das für die erste Seite spezifisch ist und für die zweite Seite des Assistenten nicht freigegeben werden sollte.

Sie müssen also ein neues ScollableComposite für die zweite Seite erstellen und Ihre Inhalte separat hinzufügen. Wenn Sie versuchen, den Inhalt desselben ScollableComposite auf der zweiten Seite zu aktualisieren, wird Ihr Inhalt nicht auf die erste Seite aktualisiert, wenn Sie auf die Zurück-Schaltfläche klicken. Weil createContent() nicht aufgerufen wird, wenn getPreviousPage() aufgerufen wird.

0

Ich fand Lösung, aber - ich muss zugeben - es war sehr dumm Fehler. Es genügt, setControl(container); zu setControl(scroll); zu ändern. Jetzt wird jede Seite richtig angezeigt. Bitte achten Sie auf solche Dinge in der Zukunft :)

Verwandte Themen