在ScrolledComposite中显示内容

时间:2012-12-25 03:27:01

标签: java position swt scrolledcomposite

我想创建一个用户可以放大和缩小的视图,因此我计划使用ScrolledComposite实现视图:

    ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    sc.setBounds(0, 0, 200, 200);

问题是:当内容的大小小于滚动复合的大小时,它总是出现在滚动复合的左上角,即使我尝试了控件的setBounds()方法或{{1滚动复合的。在下面的示例中,显示区域内容setOrigin()(100,50)小于客户区button(200,200),按钮始终显示在左上角,即使我尝试设置一些位置,使其显示在滚动的复合材料中。

sc

我得到的结果是

button is always at the top left corner

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

这里的诀窍是使用Composite中包含您的按钮和其他内容的其他ScrolledComposite。在内部或内容Composite上,您可以根据需要灵活地放置孩子。 ScrollComposite不使用布局,因此您无法控制子项的位置。就像TabItem只允许setContent而不是ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); sc.setBounds(0, 0, 200, 200); Composite content = new Composite(sc, SWT.NONE); content.setSize(300, 300); sc.setContent(content); Button button = new Button(content, SWT.PUSH); button.setText("Button"); button.setBounds(50, 50, 100, 50);

content

您可以以任何您喜欢的方式使用{{1}}复合布局子项。您现在还可以在内容合成上使用您选择的布局,以确保按钮始终保持在中心位置。