SWT - Первая радиокнопка всегда получает фокус в версии RCP 4x - PullRequest
0 голосов
/ 16 июня 2020

Первый переключатель внутри диалога всегда получает фокус внутри 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, и при открытии диалога всегда выбирается первая радиокнопка.

...