スタンドアロンのSWTスクロールバーを使用することは、(この回避策を使用して)ハックのようなものですが、実行することはできます。スニペットは次のとおりです。
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
現在、タイムアウト後にチップを非表示にする回避策がありますが、これには満足していません。どんな洞察も大歓迎です!