Java GXT FileUploadField的按键事件
仅限GXT 3.x 我越来越清楚,Sencha故意设计了FileUploadField,将所有按键事件从检测中分离出来 我试图截获onBrowserEvent(Event),但在关注FileUploadField组件时,无法检测到任何按键事件,而这些事件是由按键生成的 按键事件在哪里 我找不到任何按键处理程序插入方法 我希望允许通过按空格键或enter键触发文件上载Java GXT FileUploadField的按键事件,java,gwt,file-upload,gxt,Java,Gwt,File Upload,Gxt,仅限GXT 3.x 我越来越清楚,Sencha故意设计了FileUploadField,将所有按键事件从检测中分离出来 我试图截获onBrowserEvent(Event),但在关注FileUploadField组件时,无法检测到任何按键事件,而这些事件是由按键生成的 按键事件在哪里 我找不到任何按键处理程序插入方法 我希望允许通过按空格键或enter键触发文件上载 除了从头开始重写一个全新的组件外,有人能告诉我如何实现键盘激活的文件上传目标吗?onBrowserEvent不会接收任何事件,除非
除了从头开始重写一个全新的组件外,有人能告诉我如何实现键盘激活的文件上传目标吗?
onBrowserEvent
不会接收任何事件,除非您接收它们-您确定要调用sinkEvents
?如何添加处理程序?如果您使用addDomHandler
,它将为您接收它们,但是addHandler
假定它们不是dom事件,或者您已经调用了sinkEvents
。如果不下沉事件,浏览器就不知道如何将该事件传递给GWT小部件。如果所有事件都是自动下沉的,那么每次你在页面上移动鼠标时,你都会看到一场事件风暴,因为你通过的每个小部件以及它的所有父部件都会触发mousemove
如果覆盖onBrowserEvent
,那么您正在构建一个方法,该方法描述如何处理来自浏览器的实际事件,也就是com.google.gwt.user.client.DOM
类连接到小部件中,为其提供事件。除非将该方法设置为最终方法,否则,只要浏览器正在生成这些事件并将其传递给事件侦听器,就无法阻止您(小部件用户)获取这些事件
即使onBrowserEvent已被覆盖并成为最终事件,您仍然可以通过创建
NativePreviewHandler
并检查事件发生的位置来访问许多事件。这会让您在事件进入小部件本身之前进入事件-在那里您可以调用NativePreviewEvent.cancel()
,以防止它发生在小部件本身上,或者您可以在处理程序的早期处理它。onBrowserEvent
将不会接收任何事件,除非您接收它们-是否确保调用sinkEvents
?如何添加处理程序?如果您使用addDomHandler
,它将为您接收它们,但是addHandler
假定它们不是dom事件,或者您已经调用了sinkEvents
。如果不下沉事件,浏览器就不知道如何将该事件传递给GWT小部件。如果所有事件都是自动下沉的,那么每次你在页面上移动鼠标时,你都会看到一场事件风暴,因为你通过的每个小部件以及它的所有父部件都会触发mousemove
如果覆盖onBrowserEvent
,那么您正在构建一个方法,该方法描述如何处理来自浏览器的实际事件,也就是com.google.gwt.user.client.DOM
类连接到小部件中,为其提供事件。除非将该方法设置为最终方法,否则,只要浏览器正在生成这些事件并将其传递给事件侦听器,就无法阻止您(小部件用户)获取这些事件
即使onBrowserEvent已被覆盖并成为最终事件,您仍然可以通过创建
NativePreviewHandler
并检查事件发生的位置来访问许多事件。这会让您在事件进入小部件本身之前就了解它-在那里您可以调用NativePreviewEvent.cancel()
以防止它发生在小部件本身上,或者您可以在处理程序的早期处理它。我可以在FileUploadField组件上使用addDomHandler(handler,KeyDownEvent.getType()),但它仅在焦点位于文本字段时有效,而在按钮上无效。我需要访问该按钮以向其添加DomHandler,但该按钮是私有的。JSNI可以允许您访问其他对象的私有成员。。。也就是说,如果您正在收听按钮上的按键并添加新行为,我想知道您是否应该制作自己的小部件。顺便说一句,文件上传字段上的“按钮”是假的-你从来没有真正单击过它,因为它上面画着一个隐藏的文件输入。我可以在FileUploadField组件上使用addDomHandler(handler,KeyDownEvent.getType()),但它只在焦点位于textfield上时有效,而在按钮上不起作用。我需要访问该按钮以向其添加DomHandler,但该按钮是私有的。JSNI可以允许您访问其他对象的私有成员。。。也就是说,如果您正在收听按钮上的按键并添加新行为,我想知道您是否应该制作自己的小部件。顺便说一句,“按钮”在文件上传字段上是假的-你从来没有真正点击过它,因为有一个文件输入画在它上面,隐藏着。