java - 树不占据整个父组合

标签 java layout tree swt

我正在尝试在 SashForm 内的 Group 组合中显示 SWT Tree。 SWT 树在启动时不会填满整个 Group 组合,但一旦我重新调整 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();

}

最佳答案

这些问题通常很难解决。您需要回答的第一个问题是:哪个控件没有调整大小?

您认为这是树,但这只是因为您看不到该组。所以也许树填满了组,但组没有填满窗框。

要做的第一件事是给所有东西一个边框或不同的背景颜色。这样,您就可以看到每个控件的位置及其大小。

这应该会给你一个想法。从代码来看,这一行是没有用的:

tree.setLayout(new FillLayout());

Tree 使用它自己的固定布局来布局它的子元素。另外,您没有为 SashForm 设置布局,因此它不会更改其子项的大小。尝试一下

sashForm.setLayout(new FillLayout());

as per this example .

相关:Understanding Layouts in SWT - 古老但仍然真实。

关于java - 树不占据整个父组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13580162/

相关文章:

功能键的 Java 字符表示?

java - 是否可以在 spring 注释配置的 mvc 项目中重用预定义的 Controller ?

java - 为什么类型转换在 Java 中不起作用

android - 如何显示大于手机屏幕尺寸的图像?

android - 如何将 TableView 列与相邻列中的最大值文本值对齐

c - 在 C 中表示抽象语法树

java - 将 BPEL 用于部署流程

java - BlackBerry 布局管理器问题,虚拟大小

c++ - 在线段树中查询

r - "no observations from which to fit a model"错误