Ich habe mehrmals quer durch dieses Problem kommen und löste es wie folgt aus:
@Override
protected void createFormContent(IManagedForm managedForm) {
// set the form's body's layout to GridLayout
final Composite body = managedForm.getForm().getBody();
body.setLayout(new GridLayout());
// create the composite which should not have the scrollbar and set its layout data
// to GridData with width and height hints equal to the size of the form's body
final Composite notScrolledComposite = managedForm.getToolkit().createComposite(body);
final GridData gdata = GridDataFactory.fillDefaults()
.grab(true, true)
.hint(body.getClientArea().width, body.getClientArea().height)
.create();
notScrolledComposite.setLayoutData(gdata);
// add resize listener so the composite's width and height hints are updates when
// the form's body resizes
body.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e) {
super.controlResized(e);
gdata.widthHint = body.getClientArea().width;
gdata.heightHint = body.getClientArea().height;
notScrolledComposite.layout(true);
}
});
}
Beachten Sie die GridLayout
im Körper der Form und dann die Breite und Höhe einstellen hint
auf die Komposit GridLayoutData
.
Beachten Sie auch die Größe Listener auf den Körper, der die Rasterlayoutdaten aktualisiert und das Composite-Layout.
Hoffe es hilft!
Verwenden Sie also keine Bildlaufform. Verwenden Sie einen anderen Behälter. – jarodeells
@jarodeells Das liegt daran, dass die Methode 'getForm()' von ManagedForm ein ScrolledForm zurückgibt (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi% 2Forg% 2Feclipse% 2Fui% 2Fforms% 2FManagedForm.html) –
Konnten Sie Ihr Problem mit @janhinks Beispiel lösen? Ich habe scheinbar das gleiche Problem, bin aber nicht in der Lage, diese Lösung zum Laufen zu bringen. Sie haben also eine gefunden, bei der ich neugierig bin, was nötig war, um es zum Laufen zu bringen. – NealSr