GXT FileUploadField的按键事件

时间:2013-04-25 18:43:35

标签: java gwt file-upload gxt

仅限GXT 3.x。

我越来越明白,Sencha故意设计FileUploadField来分流所有关键的新闻事件。

我试图拦截onBrowserEvent(Event),并且在关注FileUploadField组件时无法检测到按键生成的任何按键事件。

按键事件分流在哪里?

我找不到任何按键处理程序插入方法。

我希望允许通过按空格键或输入键来触发文件上传。

如果没有从头开始重写一个全新的组件,有人可以告诉我如何实现键盘激活文件上传的目标吗?

1 个答案:

答案 0 :(得分:3)

onBrowserEvent除非您沉没,否则不会收到任何事件 - 您确定要致电sinkEvents吗?你是如何添加处理程序的?如果您使用addDomHandler,它会为您隐藏它们,但addHandler或者假设它们不是dom事件,或者您已经调用sinkEvents。在没有下沉事件的情况下,浏览器不知道将该事件传递给GWT小部件。如果所有事件都是自动陷入的,那么每当您将鼠标移动到页面上时,您会看到一个事件的风暴,因为当您传递的每个窗口小部件及其所有父窗口都会触发鼠标移动。

如果覆盖onBrowserEvent,那么您正在构建描述如何处理来自浏览器的实际事件的方法 - 这是com.google.gwt.user.client.DOM类连接到Widget以为其提供事件的位置。如果没有将该方法设为最终,那么只要浏览器生成这些事件并将它们传递给事件监听器,就无法阻止您(窗口小部件用户)获取这些事件。

即使onBrowserEvent已被覆盖并成为最终版本,您也可以仍然通过创建NativePreviewHandler并检查事件发生的位置来访问许多事件。这可以让你进入事件甚至进入小部件本身 - 在那里你可以调用NativePreviewEvent.cancel()来阻止它在小部件本身上发生,或者你可以在处理程序的早期处理它。