java为什么在使用键盘完成选择时不触发选择事件?
我有一个EclipseRCP应用程序,它使用SWT。下面是一个示例代码
Combo combo = new Combo(shell, SWT.NONE);
combo.setItems(items); // items is a String[]
combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
combo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
System.out.println("In widgetDefaultSelected");
}
@Override
public void widgetSelected(SelectionEvent e) {
System.out.println("In widgetSelected");
}
});
该组合已在代码中设置为自动完成。应该为鼠标或键盘事件触发选择事件。使用鼠标的选择会触发选择事件,但使用键盘的选择不会触发。我想知道为什么
我的eclipse不是最新的,它的版本是3.6.2和它附带的swt JAR。我将感谢任何帮助
# 1 楼答案
选择事件不用于键盘事件,Combo#addSelectionListener的Javadoc在这里非常清楚:
当用户更改组合的列表选择时
widgetSelected
被调用widgetDefaultSelected
通常在按下组合框文本区域的ENTER键时调用# 2 楼答案
由于选择事件不是用键盘触发的,所以我在combo小部件中添加了一个KeyListener,并检查用户是否按下了enter键
似乎我正在从列表框中取出所选项目。到目前为止,它似乎工作正常