2

Tree Viewers2と oneを含むビューを表示したいTable Viewer
次のようになります。


ツリービューア1 | TreeViewer2

-------------テーブルビューア------------


(いくつかの制限により、マシンから画像をアップロードできないため、申し訳ありませんが、上記のコントロールはビューの領域全体を埋める必要があります)

このためにmainComposite、すべてのコントロールを保持し、スタイルをRowLayout備えた を作成しました。 その後、1 と2を保持し、2 つの列を持つトップ コンポジットを作成しました (各列には 1 つの担当者が含まれます)。 その後、TableViewer を保持するボトム コンポジットを作成しました再び1列のグリッドレイアウトになっています。SWT.VERTICAL
TreeViewerTreeViewerGrid layoutTreeViewer

mainComposite上部と下部のコンポジットを保持します。上部と下部のコンポジットは mainComposites の高さを均等に共有する必要があり、両方のコンポジットが mainComposite の幅全体を取得する必要があります。

プログラムを実行すると、コントロールは希望どおりに順番に表示されますが、コンポジットの幅全体を取得していません (つまり、左隅に表示されます)。
さまざまなタイプのレイアウトを使用してみましたが、役に立ちませんでした。

投稿http://www.programcreek.com/2012/03/eclipse-rcp-tutorial-5-how-to-layout-your-view-gridlayout-example/を試してみました
が、うまくいきませんでしたテキストではなくテーブルビューアーを持っています。

どんな助けでも大歓迎です。

よろしく、
マンダー

4

2 に答える 2

0

GridLayoutsアラインメントをtrueに設定しSWT.FILL、両方のgrabExcess*Spaceパラメーターをtrueに設定した 一連のを使用することで、探している動作(ツリーと、使用可能なすべてのスペースを使用するテーブルの両方)を取得できます。

これを試して:

@Override
public void createPartControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    GridLayout gl_container = new GridLayout(1, false);
    gl_container.horizontalSpacing = 15;
    container.setLayout(gl_container);

    Composite mainComposite = new Composite(container, SWT.NONE);
    mainComposite.setLayout(new GridLayout(1, false));
    mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    Composite treesComposite = new Composite(mainComposite, SWT.NONE);
    treesComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    treesComposite.setLayout(new GridLayout(2, false));

    TreeViewer leftTreeViewer = new TreeViewer(treesComposite, SWT.BORDER);
    Tree leftTree = leftTreeViewer.getTree();
    leftTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TreeViewer rightTreeViewer = new TreeViewer(treesComposite, SWT.BORDER);
    Tree rightTree = rightTreeViewer.getTree();
    rightTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TableViewer bottomTableViewer = new TableViewer(mainComposite, SWT.BORDER | SWT.FULL_SELECTION);
    bottomTable = bottomTableViewer.getTable();
    bottomTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
}

または、を使用してみてくださいFormLayouts

ここでは、「分子/オフセット」アプローチを使用して物の場所を指定します。0/50/100のような数値が表示される場合、それらは基本的に使用可能なスペースのパーセンテージです。5 / -5のような小さい数値は、それらのパーセンテージで表される位置からのピクセル単位のオフセットです。それらは、コンポーネント間に小さなマージンを提供します。

@Override
public void createPartControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    GridLayout gl_container = new GridLayout(1, false);
    gl_container.horizontalSpacing = 15;
    container.setLayout(gl_container);

    Composite mainComposite = new Composite(container, SWT.NONE);
    mainComposite.setLayout(new FormLayout());
    mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    Composite treesComposite = new Composite(mainComposite, SWT.NONE);
    FormData fd_treesComposite = new FormData();
    fd_treesComposite.bottom = new FormAttachment(50);
    fd_treesComposite.right = new FormAttachment(100);
    fd_treesComposite.top = new FormAttachment(0);
    fd_treesComposite.left = new FormAttachment(0);
    treesComposite.setLayoutData(fd_treesComposite);
    treesComposite.setLayout(new FormLayout());

    TreeViewer leftTreeViewer = new TreeViewer(treesComposite, SWT.BORDER);
    Tree leftTree = leftTreeViewer.getTree();
    FormData fd_leftTree = new FormData();
    fd_leftTree.bottom = new FormAttachment(100);
    fd_leftTree.right = new FormAttachment(50, -2);
    fd_leftTree.top = new FormAttachment(0, 5);
    fd_leftTree.left = new FormAttachment(0, 5);
    leftTree.setLayoutData(fd_leftTree);

    TreeViewer rightTreeViewer = new TreeViewer(treesComposite, SWT.BORDER);
    Tree rightTree = rightTreeViewer.getTree();
    FormData fd_rightTree = new FormData();
    fd_rightTree.bottom = new FormAttachment(100);
    fd_rightTree.right = new FormAttachment(100, -5);
    fd_rightTree.top = new FormAttachment(0, 5);
    fd_rightTree.left = new FormAttachment(50, 3);
    rightTree.setLayoutData(fd_rightTree);

    TableViewer bottomTableViewer = new TableViewer(mainComposite, SWT.BORDER | SWT.FULL_SELECTION);
    bottomTable = bottomTableViewer.getTable();
    FormData fd_bottomTable = new FormData();
    fd_bottomTable.bottom = new FormAttachment(100, -5);
    fd_bottomTable.right = new FormAttachment(100, -5);
    fd_bottomTable.top = new FormAttachment(50, 5);
    fd_bottomTable.left = new FormAttachment(0, 5);
    bottomTable.setLayoutData(fd_bottomTable);
}
于 2012-10-15T14:16:47.863 に答える
0

すべてのコンポジット FillLayout で使用します。これを使用する方法の小さな例を次に示します重要なのは、SWT.VERTICAL/SWT.HORIZONTAL を設定することです。

于 2012-10-15T09:50:45.733 に答える