Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GXT FileUploadField的按键事件_Java_Gwt_File Upload_Gxt - Fatal编程技术网

Java GXT FileUploadField的按键事件

Java GXT FileUploadField的按键事件,java,gwt,file-upload,gxt,Java,Gwt,File Upload,Gxt,仅限GXT 3.x 我越来越清楚,Sencha故意设计了FileUploadField,将所有按键事件从检测中分离出来 我试图截获onBrowserEvent(Event),但在关注FileUploadField组件时,无法检测到任何按键事件,而这些事件是由按键生成的 按键事件在哪里 我找不到任何按键处理程序插入方法 我希望允许通过按空格键或enter键触发文件上载 除了从头开始重写一个全新的组件外,有人能告诉我如何实现键盘激活的文件上传目标吗?onBrowserEvent不会接收任何事件,除非

仅限GXT 3.x

我越来越清楚,Sencha故意设计了FileUploadField,将所有按键事件从检测中分离出来

我试图截获onBrowserEvent(Event),但在关注FileUploadField组件时,无法检测到任何按键事件,而这些事件是由按键生成的

按键事件在哪里

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

我希望允许通过按空格键或enter键触发文件上载


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

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可以允许您访问其他对象的私有成员。。。也就是说,如果您正在收听按钮上的按键并添加新行为,我想知道您是否应该制作自己的小部件。顺便说一句,“按钮”在文件上传字段上是假的-你从来没有真正点击过它,因为有一个文件输入画在它上面,隐藏着。