使用独立的 SWT 滚动条是一种 hack(使用这个解决方法),但它可以做到。这是一个片段:
ScrolledComposite scrolledComposite = new ScrolledComposite(
parent, SWT.V_SCROLL);
ScrollBar scrollbar = scrolledComposite.getVerticalBar();
Shell tip = new Shell(UserInterface.getShell(), SWT.ON_TOP
| SWT.NO_FOCUS | SWT.TOOL);
// ..stylize and fill the tooltip..
现在我要做的是监视用户何时与滚动条交互。特别是,我想知道用户何时拖动滚动条(以及何时释放滚动条)以显示 Office 2007 样式的工具提示,显示滚动条的位置对应于哪个页面。
目前,我有以下显示工具提示的代码:
scrollbar.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent event) {}
public void widgetSelected(SelectionEvent event) {
tip.setVisible(true);
}
}
释放鼠标按钮时让工具提示消失似乎是合乎逻辑的:
scrollbar.addListener(SWT.MouseUp, new Listener() {
public void handleEvent(Event event) {
tip.setVisible(false);
}
});
但是,当用户与滚动条交互时,两者似乎都scrollbar
没有scrolledComposite
响应该事件。SWT.MouseUp
我目前有一个解决方法,可以在超时后隐藏提示,但我对此并不满意。任何见解将不胜感激!