发布网友 发布时间:2022-04-27 07:22
共2个回答
热心网友 时间:2022-06-28 11:05
tabItem2.setControl(addSc(tabFolder1));/**
* 加入ScrolledComposite
* @param grandparent 必须是GridLayout
* @return
*/
private Composite addSc(Composite grandparent) {
Composite parent=new Composite(grandparent, SWT.BORDER);
//sc的父窗口必须是FillLayout
parent.setLayout(new FillLayout());
ScrolledComposite sc = new ScrolledComposite(parent, SWT.BORDER
| SWT.V_SCROLL | SWT.H_SCROLL);
Composite c = new Composite(sc, SWT.NONE);
c.setSize(400, 400);
c.setLayout(new GridLayout(1, true));
for (int i = 0; i < 1000; i++) {
new Button(c, SWT.PUSH).setText("Text" + i);
}
sc.setMinSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));
sc.setContent(c);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);
sc.setAlwaysShowScrollBars(true);
return parent;
}
sc的父窗口必须是FillLayout型的,我本来想把tabFolder1设置成FillLayout的,让tabFolder1作为sc的父窗口,发现结果没有滚动条。后来就在tabFolder1创了一个子Composite,这个Composite设置成FillLayout,再在此Composite下创建sc就有滚动条了。
热心网友 时间:2022-06-28 11:05
把你的shell用FillLayout布局试试
shell.setLayout(new FillLayout(SWT.HORIZONTAL));追问我能在问你一个问题吗?怎么在SWT中用上下键控制滚动条????
追答
给你的scrollComposite加个键盘监听,在监听中控制
final ScrollBar vBar = scrolledComposite.getVerticalBar();想改水平滚动条同理,把getVerticalBar()改成getHorizontalBar()就行