Я пытаюсь добавить некоторые предпочтения в меню Eclipse, и для этого я создаю в JFace раздел RadioGroupFieldEditor, а рядом с последним радио в RadioGroupField я хочу иметь текстовую область, как показано на рисунке ниже:
![enter image description here](https://i.stack.imgur.com/XbhBb.png)
Однако я не могу этого сделать. Я создаю 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](https://i.stack.imgur.com/nlzf8.png)