我正在使用 a 为我的 RCP 应用程序创建我的 GUI,GridLayout
但我遇到了问题,因为据我了解,aGridLayout
按照创建它们/设置它们的布局数据的顺序添加元素?因此,这并没有为移动元素和添加新元素提供很多/任何灵活性,同时保持先前放置的元素的相同布局。
我应该使用其他方法来制作我的 GUI 吗?我需要它灵活且易于指定单个组件的大小和位置,而不是组件进入下一个空间。
目前GridLayout
只允许我指定屏幕上的列数,然后指定元素属性(SWT.LEFT, SWT.CENTER
)等。
这是我的代码来说明我的意思:
import javax.annotation.PostConstruct;
import org.eclipse.swt.*;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
public class CreateUI {
//Text area for the variables
Text variableArea;
Text methodArea;
Text otherArea;
Text fooArea;
@PostConstruct
//Annotation indicates the method is to be called after the class is constructed
public void createInterface(Composite parent){
int columns =4;
//Set the layout of the parent (the Part) to a grid layout
parent.setLayout(new GridLayout(columns, true));
variableArea = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
variableArea.setText("Hello");
variableArea.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
methodArea = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
methodArea.setText("Hello2");
methodArea.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
otherArea = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
otherArea.setText("Hello3");
otherArea.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
fooArea = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
fooArea.setText("Hello4");
fooArea.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true, 1, 1));
}
}
这会产生:
目前只有这 4 个文本区域作为示例,但稍后我将有多个文本区域、按钮、下拉菜单等,我希望能够更轻松地格式化它们并自由定位它们。
关于上面的示例,我希望能够将这 4 个文本区域在列中彼此重叠放置以显示信息,并在剩余空间中自由放置其他元素。
任何指针都非常适合我应该使用的东西。