【发布时间】:2010-12-18 18:04:02
【问题描述】:
使用独立的 SWT 滚动条有点像 hack(使用 this workaround),但它可以做到。这是一个sn-p:
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 事件。
我目前有一个解决方法,可以在超时后隐藏提示,但我对此并不满意。任何见解将不胜感激!
【问题讨论】:
标签: java swt scrollbar mouseevent