从内部复合材料中移除滚动条,但保留外部复合材料的滚动条

时间:2014-11-10 11:17:28

标签: java swt zest

我使用的是一个复合材料,其fillLayout为内部复合材料,ScrollComposite为外部复合材料。

我已经修复了外部复合材料的尺寸。 当我在外部复合中有滚动条但在内部复合中没有滚动条时,我在将复合数据导出为png时获得完整的信息。 但是当显示的信息太大导致内部复合的滚动条时会出现问题。

这只是所做内容的一小部分:

FillLayout layout = new FillLayout(SWT.HORIZONTAL);

final ScrolledComposite scrolledComposite = new ScrolledComposite(getContainer(), SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
        scrolledComposite.setExpandHorizontal(true);
        scrolledComposite.setExpandVertical(true);

final Composite composite = new Composite(scrolledComposite, SWT.NONE);     
composite.setLayout(layout);

GraphViewer gvTree = new GraphViewer(composite, SWT.NONE);

<Code to populate data in the tree>

gvTree.setLayoutAlgorithm(treeLayout,true); 

scrolledComposite.setContent(composite);
scrolledComposite.setMinSize(1000,composite.getBounds().height);

1 个答案:

答案 0 :(得分:0)

我发现当外部复合体是ScrolledComposite时,为了避免内部复合体中的滚动条,我们需要确保ScrolledComposite的minSize始终大于内部复合体的大小。

为了确保ScrolledComposite大小正确,我改变了

 scrolledComposite.setMinSize(1000,composite.getBounds().height);
**to** 
scrolledComposite.setMinSize(gvTree.getNodeElements().length*160,
composite.getBounds().height);

这确保在创建图形之后,ScrolledComposite总是大于等于内部复合的当前大小。

希望这有帮助。