Vaadin-tooltip有时不显示。怎么了?如何以编程方式显示它?

时间:2018-12-05 11:13:23

标签: javascript gwt vaadin

我使用大型HTML画布绘制许多想法(正方形等)。当鼠标在画布上移动到“特殊”正方形时,应引发工具提示。因此,我在连接器方法 hasTooltip()中覆盖了该方法,该方法现在始终返回true。在客户端,我在画布上添加了 MouseMoveListener ,当鼠标光标移至正方形位置时,我在其中设置了 description descriptionContentMode 具有底层方形和内容模式的工具提示字符串的连接器状态。同时, VTooltip#TooltipEventHandler 还获得一个 MouseMoveEvent ,启动显示计时器,依此类推。最后,启动延迟结束后,我可以看到我的工具提示。如果鼠标离开正方形,则将 description descriptionContentMode 设置为 null ,工具提示消失。到目前为止,一切都很好。 但是在某些情况下,它不起作用。工具提示不可见。在调试过程中(调试mousemove-events确实很烦人),我得到了mousemove-event,但是tooltipeventhandler没有,因此它不启动其显示计时器,依此类推。因此,我尝试以编程方式显示工具提示,但没有成功。首先,我想“重新触发”我的mousemove事件,因此tooltipeventhandler可以重新进行操作:

final Canvas widget = myConnetor.getWidget();

// myConnetor.getConnection().getVTooltip().connectHandlersToWidget(
//                  widget );

DomEvent.fireNativeEvent(
                pEvent.getNativeEvent().getNativeEvent(),
                widget,
                widget.getElement() );

工具提示处理程序接收事件,但是在方法 handleShowHide()中,它以第三行结尾:

// We can ignore move event if it's handled by move or over already
if (currentElement == element && handledByFocus) {
         return;
}

我还尝试通过本机访问直接访问 VTooltip 中的方法 showTooltip(),因为它是私有的:

private native void showMyTooltip( final VTooltip pTooltip )
/*-{
    pTooltip.showTooltip();
}-*/;

但是,当我在调试模式下启动Vaadin应用程序时,总是遇到未知方法 showTooltip()的错误。我试图找出本机调用可能出了什么问题,但是我对使用纯JavaScript的Vaadin客户端编码不是那么坚定。当我在Chrome浏览器中查看DevTools时,会看到以下内容:

function com_vaadin_client_VTooltip_$showTooltip__Lcom_vaadin_client_VTooltip_2V(this$static){
    ...
}

在我看来,有一种方法 showTooltip()。那我的电话怎么了? 有人对我还有什么想法吗?在我的第一次尝试中,我还可以尝试先触发模糊事件,因为在 onBlur() handledByFocus 设置为 false ,因此第3行将失败。 但是我最感兴趣的是如何找出为什么too​​ltipevent-handler有时无法获取mousemove-events并解决此问题。所有其他可能性都有些愚蠢,并且不是真的“安全”了较新的Vaadin版本等等。我使用Vaadin框架8.5.2,但在遇到这些问题之前。

非常感谢。

0 个答案:

没有答案