を使用して RCP アプリケーション用の GUI を作成していますが、問題が発生しています。なぜなら、作成/レイアウト データの設定順に要素が追加さGridLayout
れることがわかっているからです。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 つのテキスト領域を列に重ねて配置して情報を表示し、残りのスペースに他の要素を自由に配置できるようにしたいと考えています。
私が使用すべきものには、どんな指針も素晴らしいでしょう。