我想创建一个用户可以放大和缩小的视图,因此我计划使用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
我得到的结果是
如何解决此问题?
答案 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}}复合布局子项。您现在还可以在内容合成上使用您选择的布局,以确保按钮始终保持在中心位置。