是否可以更改SWT中的工具提示延迟? 在Swing中,我通常会使用Tooltip.sharedInstance()中的方法。这似乎在SWT中破裂了。
答案 0 :(得分:6)
我使用下面的内容。感谢@Baz:)
public class SwtUtils {
final static int TOOLTIP_HIDE_DELAY = 300; // 0.3s
final static int TOOLTIP_SHOW_DELAY = 1000; // 1.0s
public static void tooltip(final Control c, String tooltipText, String tooltipMessage) {
final ToolTip tip = new ToolTip(c.getShell(), SWT.BALLOON);
tip.setText(tooltipText);
tip.setMessage(tooltipMessage);
tip.setAutoHide(false);
c.addListener(SWT.MouseHover, new Listener() {
public void handleEvent(Event event) {
tip.getDisplay().timerExec(TOOLTIP_SHOW_DELAY, new Runnable() {
public void run() {
tip.setVisible(true);
}
});
}
});
c.addListener(SWT.MouseExit, new Listener() {
public void handleEvent(Event event) {
tip.getDisplay().timerExec(TOOLTIP_HIDE_DELAY, new Runnable() {
public void run() {
tip.setVisible(false);
}
});
}
});
}
}
用法示例:SwtUtils.tooltip(button, "Text", "Message");
答案 1 :(得分:3)
您可以使用以下内容:
ToolTip tip = new ToolTip(shell, SWT.BALLOON | SWT.ICON_INFORMATION);
tip.setText("Title");
tip.setMessage("Message");
tip.setAutoHide(false);
然后,每当您想要显示它时,请使用tip.setVisible(true)
并启动计时器,该计时器将在指定时间后调用tip.setVisible(false)
。
tip.setAutoHide(false)
强制提示留下,直到您拨打tip.setVisible(false)
。
答案 2 :(得分:2)
不,不是我所知道的。工具提示与底层本机系统的工具提示紧密耦合,因此您会遇到他们的行为。
但还有另一种方法,你必须自己实施工具提示。使用这种方法,您可以创建非常复杂的工具提示。
class TooltipHandler {
Shell tipShell;
public TooltipHandler( Shell parent ) {
tipShell = new Shell( parent, SWT.TOOL | SWT.ON_TOP );
<your components>
tipShell.pack();
tipShell.setVisible( false );
}
public void showTooltip( int x, int y ) {
tipShell.setLocation( x, y );
tipShell.setVisible( true );
}
public void hideTooltip() {
tipShell.setVisible( false );
}
}