У меня есть диалоговое окно с приведенным ниже кодом. Появится полоса прокрутки, но не прокручивается до конца. Слишком долго, чтобы содержимое в конце не появилось. Даже если диалог изменен, чтобы быть маленьким, содержимое в конце не видно. Пожалуйста, предложите, как заставить панель прокрутки работать в соответствии с приведенным ниже сценарием.Как предотвратить прокрутку ScrollledComposite от бесконечного расширения по вертикали
public class SampleDialog extends TrayDialog {
public SampleDialog(final Shell shell) {
super(shell);
this.shell = shell;
}
@Override
public void create() {
super.create();
}
@Override
protected Control createDialogArea(final Composite parent) {
final GridLayout layout = new GridLayout();
layout.numColumns = 1;
parent.setLayout(layout);
final ScrolledComposite sc1 = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.BORDER);
sc1.setExpandHorizontal(true);
sc1.setExpandVertical(true);
//sc1.setMinWidth(0);
final Composite composite = new Composite(sc1, SWT.NONE);
final GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 2;
composite.setLayout(gridLayout);
sc1.setContent(composite);
//this.sc1.setMinSize(parent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
//this.sc1.setMinHeight(50);
//this.sc1.setAlwaysShowScrollBars(true);
sc1.addControlListener(new ControlAdapter() {
@Override
public void controlResized(final ControlEvent e) {
final Rectangle r = sc1.getClientArea();
sc1.setMinSize(parent.computeSize(r.width, SWT.DEFAULT));
}
});
final GridData gridDataLabel = new GridData();
final Label label = new Label(composite, SWT.NONE);
label.setText("Testing");
label.setLayoutData(gridDataLabel);
for (i = 0 ; i <= n ; i++) { // n can be 1 to any number -- decided at run time
createSampleCombo(composite);
}
}
public void createSampleCombo(Composite parent) {
final Composite composite = new Composite(parent, SWT.NONE);
final GridLayout layout = new GridLayout();
layout.numColumns = 3;
composite.setLayout(layout);
final GridData gridDataCombo = new GridData();
gridDataCombo.horizontalAlignment = GridData.FILL;
gridDataCombo.grabExcessHorizontalSpace = true;
final Combo myCombo = new Combo(composite, SWT.NONE);
myCombo.setLayoutData(gridDataCombo);
gridDataCombo.minimumWidth = 500;
final GridData gridDataButton = new GridData();
final Button browse = new Button(composite, SWT.PUSH);
browse.setText("Browse");
browse.setLayoutData(gridDataButton);
}
}
where:
org.eclipse.jface.dialogs.TrayDialog;
org.eclipse.swt.layout.GridLayout;
в 3-изображение, последний элемент управления не виден и хорошо, и кнопка отмены также не видно. Мне нужна полоса прокрутки, чтобы перейти вниз, чтобы я мог видеть все содержимое. Пожалуйста, подсказывают, как это можно сделать
я изменил код, как вы предложили и добавил строку ниже (которые я пропустил), он прошел через !!! composite.setSize (400, 400); Спасибо!! – Krishnaveni