Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 了解swt SelectionListener中的widgetSelected事件和widgetDefaultSelected事件?_Java_Swt_Listener - Fatal编程技术网

Java 了解swt SelectionListener中的widgetSelected事件和widgetDefaultSelected事件?

Java 了解swt SelectionListener中的widgetSelected事件和widgetDefaultSelected事件?,java,swt,listener,Java,Swt,Listener,我很难理解SWT SelectionListener中两种方法之间的区别。javadoc如下所示: 空虚 org.eclipse.swt.events.SelectionListener.widgetSelected(SelectionEvent (e) 控件中发生选择时发送 例如,当用户选择一个项目时,会在列表中进行选择 或使用键盘或鼠标输入项目。在某些平台上 在按下鼠标按钮或键时发生。在其他人身上,这是经常发生的 释放鼠标或按键时。精确的按键或鼠标手势 原因此事件特定于平台 空虚 org.e

我很难理解SWT SelectionListener中两种方法之间的区别。javadoc如下所示:

空虚 org.eclipse.swt.events.SelectionListener.widgetSelected(SelectionEvent (e)

控件中发生选择时发送

例如,当用户选择一个项目时,会在列表中进行选择 或使用键盘或鼠标输入项目。在某些平台上 在按下鼠标按钮或键时发生。在其他人身上,这是经常发生的 释放鼠标或按键时。精确的按键或鼠标手势 原因此事件特定于平台

空虚 org.eclipse.swt.events.SelectionListener.WidgeDefaultSelected(SelectionEvent (e)

当控件中出现默认选择时发送

例如,在某些平台上,当 用户双击一个项目或键入文本返回。在一些 在平台上,当按下鼠标按钮或键时会发生该事件。在…上 在其他情况下,当鼠标或键被释放时会发生这种情况。确切的钥匙或 导致此事件的鼠标手势特定于平台

在我看来,当用户以任何方式选择小部件时,都会调用
widgetSelected()
。当用户完成与小部件的交互时,将调用
widgetDefaultSelected()
。对于文本小部件,按Enter键;对于列表,这将是双击列表项;至于日期,那就是按回车键


这种理解正确吗?

您的总体理解是正确的,尽管“完成”一词可能并非在所有情况下都100%准确

发送(默认)选择事件的小部件在JavaDoc中记录其各自的
addSelectionListener
方法的特定细节。您可以在发送
widgetSelected
和/或
widgetDefaultSelected
时读取


例如,如果查看
链接::addSelectionListener
JavaDoc,您将看到从未调用
widgetDefaultSelected()

谢谢<代码>widgetDefaultSelected()从未被调用?javadoc说“当用户更改控件的值时调用widgetSelected。通常在按下ENTER键时调用widgetDefaultSelected。”感谢您的提示,我看到的是一个过时的SWT版本。我的意图是证明这两个事件的意义和存在是特定的。我将相应地更改帖子。当我自己通过代码调用“setSelection”时,如何调用“widgetSelected”的回调?以编程方式更改Selection不会触发事件。此处的原因是避免在事件中使用保护代码,如
if!以编程方式选择的…
。最好手动调用事件代码”“也是。如果不可避免,请使用widget.notifyListeners(SWT.Seletion,null)。