Первый переключатель внутри диалога всегда получает фокус внутри Composite в версии RCP 4.x. Даже если мы пытаемся установить фокус на первую метку, он не получает фокус. В версии RCP 3.X метка получает фокус, а первая радиокнопка не выбирается. Как преодолеть это и установить фокус на первую метку вместо радио.
PFB пример кода, который мы пробовали в версии 3.x, где первый переключатель не выбирается автоматически.
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = new Composite(parent,SWT.CENTER);
composite.setLayout(new GridLayout(1, false));
composite.setLayoutData(new GridData(SWT.NONE, SWT.NONE, true, true));
((GridData) composite.getLayoutData()).minimumWidth = 200;
paintGroup(composite);
ABC.forceFocus();
return parent;
}
private void paintGroup(Composite parent)
{
Group group = new Group(parent, SWT.NONE);
group.setText("Type 1");
GridLayout groupGridLayout = new GridLayout(1, false);
group.setLayout(groupGridLayout);
GridData groupGridData = new GridData(SWT.NONE, SWT.NONE, true, true);
groupGridData.widthHint = 200;
groupGridData.heightHint = 40;
group.setLayoutData(groupGridData);
Composite mainComposite = new Composite(group,SWT.CENTER);
mainComposite.setLayout(new GridLayout(5, false));
mainComposite.setLayoutData(new GridData(SWT.NONE, SWT.NONE, true, true));
Button abcRadio = new Button(mainComposite, SWT.RADIO);
ABC = new Label(mainComposite,
SWT.NONE);
GridData gDataLabel = new GridData(SWT.NONE, SWT.NONE, true, true);
gDataLabel.verticalAlignment = SWT.CENTER;
ABC.setText(" " + "ABC");
ABC.setLayoutData(gDataLabel);
Button defRadio = new Button(mainComposite, SWT.RADIO);
Label DEF = new Label(mainComposite,
SWT.NONE);
GridData gDataLabel1 = new GridData(SWT.NONE, SWT.NONE, true, true);
gDataLabel1.verticalAlignment = SWT.CENTER;
DEF.setText(" " + "DEF");
DEF.setLayoutData(gDataLabel1);
abcRadio.setSelection(false);
defRadio.setSelection(false);
}
Мы использовали тот же код в версии 4.x, и при открытии диалога всегда выбирается первая радиокнопка.