Events GWT:如果单击打开对话框,则按钮不会删除悬停
我有一个简单的GWT按钮,通过点击打开一些对话框。CSS样式的编写方式使onhover更改按钮的外观 当我单击此按钮并关闭某个对话框时,问题开始出现。悬停的风格依然存在强> 这是因为在按钮的父级CustomButtom中有一个代码,该代码仅在发生MouseOut事件时才删除悬停。问题是,如果你打开一个带有深色半透明屏幕的对话框,它永远不会出现。未发出相应的事件,且按钮仍处于悬停状态 我试图通过手动触发此事件来修复此问题。幸运的是,当用户关闭该对话框时,我可以捕捉到onBlur事件并尝试在那一刻做些事情。我尝试手动创建OnMouseOut事件:Events GWT:如果单击打开对话框,则按钮不会删除悬停,events,gwt,Events,Gwt,我有一个简单的GWT按钮,通过点击打开一些对话框。CSS样式的编写方式使onhover更改按钮的外观 当我单击此按钮并关闭某个对话框时,问题开始出现。悬停的风格依然存在 这是因为在按钮的父级CustomButtom中有一个代码,该代码仅在发生MouseOut事件时才删除悬停。问题是,如果你打开一个带有深色半透明屏幕的对话框,它永远不会出现。未发出相应的事件,且按钮仍处于悬停状态 我试图通过手动触发此事件来修复此问题。幸运的是,当用户关闭该对话框时,我可以捕捉到onBlur事件并尝试在那一刻做些事
@Override
public void onBrowserEvent(Event event) {
int type = DOM.eventGetType(event);
if (type == Event.ONBLUR)
{
NativeEvent evt2 = Document.get().createMouseOutEvent(1, 0, 0, 0, 0, false, false, false, false, NativeEvent.BUTTON_LEFT, MyPushButton.this.getElement());
MyPushButton.this.getElement().dispatchEvent(evt2);
}
logger.info(event.getType());
super.onBrowserEvent(event);
}
。。。但由于某些原因,此代码从不发送事件。控制台中不会记录新的鼠标移出事件,并且不会更改悬停样式。没有抛出异常
为什么我不能启动事件?
还有其他办法解决这个问题吗
GWT 2.5.1这是一个已知的问题:
实际上,有,如果可能的话,建议您使用按钮
(或提交按钮
或重置按钮
)和CSS;或者可能是TextButton
(或者是自定义的基于单元格的ButtonBase
子类)。ToggleButton
可能是一个例外,因为除了复选框之外,它没有真正的等价物。这是一个已知的问题:
实际上,有,如果可能的话,建议您使用按钮
(或提交按钮
或重置按钮
)和CSS;或者可能是TextButton
(或者是自定义的基于单元格的ButtonBase
子类)。ToggleButton
可能是一个例外,因为它除了一个复选框之外没有真正的等价物。最后我让它工作起来了。请注意托马斯·布罗耶的答案,答案更为宽泛
@Override
/**
* In case onClick opens dialog, mouseOutEvent is not issued, thus preventing the button
* from removing the onHovering styles. Firing that event manually onBlur.
*/
public void onBrowserEvent(Event event)
{
if (DOM.eventGetType(event) == Event.ONBLUR)
{
NativeEvent mouseOutEvent = Document.get().createMouseOutEvent(1, 0, 0, 0, 0, false, false, false, false, NativeEvent.BUTTON_LEFT, getElement().getParentElement());
getElement().dispatchEvent(mouseOutEvent);
super.onBrowserEvent(Event.as(mouseOutEvent));
}
super.onBrowserEvent(event);
}
我终于成功了。请注意托马斯·布罗耶的答案,答案更为宽泛
@Override
/**
* In case onClick opens dialog, mouseOutEvent is not issued, thus preventing the button
* from removing the onHovering styles. Firing that event manually onBlur.
*/
public void onBrowserEvent(Event event)
{
if (DOM.eventGetType(event) == Event.ONBLUR)
{
NativeEvent mouseOutEvent = Document.get().createMouseOutEvent(1, 0, 0, 0, 0, false, false, false, false, NativeEvent.BUTTON_LEFT, getElement().getParentElement());
getElement().dispatchEvent(mouseOutEvent);
super.onBrowserEvent(Event.as(mouseOutEvent));
}
super.onBrowserEvent(event);
}