JFace добавить текстовое поле рядом с RadioGroupFieldEditor - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь добавить некоторые предпочтения в меню Eclipse, и для этого я создаю в JFace раздел RadioGroupFieldEditor, а рядом с последним радио в RadioGroupField я хочу иметь текстовую область, как показано на рисунке ниже: enter image description here

Однако я не могу этого сделать. Я создаю GridLayout с двумя столбцами, в одном столбце я хочу RadioGroupFieldEditor, в другом я хочу текстовое поле. Текстовое поле находится ниже RadioGroupField, а не во втором столбце, как я ожидаю.

вот код:

    protected Control createContents(Composite parent) {
    Composite fieldEditorParent = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    fieldEditorParent.setLayout(layout);
    fieldEditorParent.setFont(parent.getFont());

    createAGroup(fieldEditorParent);

    return fieldEditorParent;
  }

  private void createAGroup(Composite parent) {
    Group group = new Group(parent, SWT.NONE);
    group.setText("Group");
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    group.setLayout(layout);

    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    data.grabExcessHorizontalSpace = true;
    group.setLayoutData(data);

    GridLayout subLayout = new GridLayout();
    subLayout.numColumns = 3;

    Composite expertUserComposite1 = new Composite(group, SWT.NONE);
    expertUserComposite1.setLayout(subLayout);
    new Button(expertUserComposite1, SWT.RADIO | SWT.LEFT);
    new Label(expertUserComposite1, SWT.BEGINNING).setText("aaa");
    new Text(expertUserComposite1, SWT.BORDER);

    Composite expertUserComposite2 = new Composite(group, SWT.NONE);
    expertUserComposite2.setLayout(subLayout);
    new Button(expertUserComposite2, SWT.RADIO | SWT.LEFT);
    new Label(expertUserComposite2, SWT.BEGINNING).setText("bbb");

    Composite expertUserComposite3 = new Composite(group, SWT.NONE);
    expertUserComposite3.setLayout(subLayout);

    new RadioGroupFieldEditor(IExportCSVPreferences.DELIMITER_NAME_CURRENT,
        "RadioGroup", 1,
        new String[][] { { "line1", "line1" }, { "line2", "line2" }, { "line3", "line3" } },
        expertUserComposite3);
    new Text(expertUserComposite3, SWT.BORDER);

    Composite expertUserComposite4 = new Composite(group, SWT.NONE);
    expertUserComposite4.setLayout(subLayout);

    new RadioGroupFieldEditor(IExportCSVPreferences.DELIMITER_NAME_CURRENT, "RadioGroup", 1,
        new String[][] { { "line1", "line1" }, { "line2", "line2" }, { "line3", "line3" } }, expertUserComposite4,
        true);
    new Text(expertUserComposite4, SWT.BORDER);
  }

Вот результат: enter image description here

...