Java RCP GUI使用哪种类型的布局

Java RCP GUI使用哪种类型的布局,java,user-interface,swt,eclipse-rcp,rcp,Java,User Interface,Swt,Eclipse Rcp,Rcp,我正在使用GridLayout为我的RCP应用程序创建GUI,但我遇到了一些问题,因为据我所知,GridLayout按照创建/设置布局数据的顺序添加元素?因此,这并不能为移动元素和添加新元素提供很多/任何灵活性,同时保持先前放置的元素的相同布局 我是否应该使用其他方法来制作GUI?我需要它是灵活和易于指定的大小和位置的个别组成部分,而不是在下一个空间的组成部分 目前,GridLayout只允许我指定屏幕上的列数,然后指定元素属性(SWT.LEFT,SWT.CENTER)等 下面是我的代码来说明我

我正在使用
GridLayout
为我的RCP应用程序创建GUI,但我遇到了一些问题,因为据我所知,
GridLayout
按照创建/设置布局数据的顺序添加元素?因此,这并不能为移动元素和添加新元素提供很多/任何灵活性,同时保持先前放置的元素的相同布局

我是否应该使用其他方法来制作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个文本区域放置在一列中,以显示信息,并在剩余空间中自由放置其他元素


对于我应该使用的内容,任何指针都非常有用。

非常灵活。从内置布局来看,
FormLayout
也是一个不错的选择,但是它比
GridLayout
要正确一些,所以我只建议您在发现
GridLayout
确实不合适的情况下使用它。

我认为
GridLayout
是最好的选择。如果你还没有读过,请阅读。
MigLayout
是否比
GridLayout
有任何优势,可以证明使用额外的库是合理的?@Baz 1。不限于网格(显然)。2.即使在使用网格时,也可以轻松更改单元组件的放置位置(而不是,例如,用空的
复合
填充位置,并且必须经常更改其编号)。查看并考虑在GrayDealth/FraseDead中有多少可以做到这一点,以及付出多少努力。同样,如果标准布局确实满足您的要求,请使用它们;如果没有,请使用另一个,然后
MigLayout
是一个非常好的选择。