0

Tree内のGroupコンポジットでSWTを表示しようとしていますSashForm。SWTツリーは、起動時にグループコンポジット全体を埋めていませんが、SashFormのサイズを変更するといっぱいになります。正しく機能しています。つまり、ツリーがグループコンポジット全体を占めています。誰か助けてもらえますか?

    sashForm = new SashForm(parent, SWT.HORIZONTAL | SWT.SMOOTH | SWT.H_SCROLL);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));

    explainStepsGroup = new Group(sashForm, SWT.NONE);
    explainStepsGroup.setText("Explain Steps");
    GridData gd = new GridData(SWT.FILL,SWT.FILL,true,true);
    explainStepsGroup.setLayoutData(gd);
    explainStepsGroup.setLayout(new FillLayout());

    tree = new Tree(explainStepsGroup, SWT.BORDER);
    tree.setLayout(new FillLayout());       
    tree.setHeaderVisible(true);
    tree.setToolTipText("Steps");
    ...
    ...
    void fillTreeItems() {  
    TreeItem rootTreeItem = new TreeItem(tree, SWT.NULL);
    rootTreeItem.setText("Steps");
    rootTreeItem.setExpanded(true); 

    TreeItem stepNumTreeItem = null;
    TreeItem stepTextItem = null;

    stepList = m_explainModel.getStepText();
    Iterator<String> iter = stepList.keySet().iterator();

    while(iter.hasNext()) {
    stepNumTreeItem = new TreeItem(rootTreeItem, SWT.NULL);
    String stepNum = iter.next();
    stepNumTreeItem.setText(stepNum.toString());
    stepNumTreeItem.setExpanded(false); 

    stepTextItem = new TreeItem(stepNumTreeItem, SWT.WRAP);
    stepTextItem.setText(stepList.get(stepNum));
    tree.showItem(stepNumTreeItem); 

    }
    tree.setRedraw(true);
    tree.pack();

}
4

2 に答える 2

1

これらの問題は、通常、把握するのが困難です。最初に答える必要がある質問は、次のとおりです。サイズが変更されていないコントロールはどれですか?

木だと思い込んでいますが、それはグループが見えないからです。したがって、ツリーがグループを埋めている可能性がありますが、グループはサッシを埋めていません。

最初に行うことは、すべてに境界線または明確な背景色を与えることです。そうすれば、各コントロールの場所と大きさを確認できます。

それはあなたにアイデアを与えるはずです。コードから、この行は役に立たない:

tree.setLayout(new FillLayout());

Tree は、独自の固定レイアウトを使用して子をレイアウトします。また、 のレイアウトを設定していないSashFormため、子のサイズは変更されません。試す

sashForm.setLayout(new FillLayout());

この例に従って

関連: SWT でのレイアウトの理解- 古くても真実。

于 2012-11-27T08:51:24.630 に答える
1

GridDataに何も設定していませんTree。以下のサンプルコードを試してください。

public class Dummy
{
    public static void main(String[] args)
    {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Dummy window");
        shell.setLayout(new GridLayout(1, false));

        SashForm sashForm = new SashForm(shell, SWT.HORIZONTAL | SWT.SMOOTH | SWT.H_SCROLL);
        sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

        Group firstGroup = new Group(sashForm, SWT.NONE);
        firstGroup.setText("Upper");
        firstGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        firstGroup.setLayout(new GridLayout(1, false));

        Tree tree = new Tree(firstGroup, SWT.BORDER);
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        tree.setHeaderVisible(true);
        tree.setToolTipText("Steps");

        fillTreeItems(tree);

        Group secondGroup = new Group(sashForm, SWT.NONE);
        secondGroup.setText("Lower");
        secondGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        secondGroup.setLayout(new GridLayout(1, false));

        Tree secondTree = new Tree(secondGroup, SWT.BORDER);
        secondTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        secondTree.setHeaderVisible(true);
        secondTree.setToolTipText("Steps");

        fillTreeItems(secondTree);

        shell.pack();
        shell.setSize(400, 200);
        shell.open();
        while (!shell.isDisposed())
        {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

    private static void fillTreeItems(Tree tree)
    {
        TreeItem rootTreeItem = new TreeItem(tree, SWT.NULL);
        rootTreeItem.setText("Steps");
        rootTreeItem.setExpanded(true);

        TreeItem item = new TreeItem(rootTreeItem, SWT.NULL);
        item.setText("item");
        item.setExpanded(false);

        tree.pack();
    }
}

起動後はこんな感じ。

ここに画像の説明を入力

そして、移動した後Sash

ここに画像の説明を入力

于 2012-11-27T08:58:16.543 に答える