如何解决为什么使用键盘完成选择后未触发选择事件?
我有使用SWT的Eclipse RCP应用程序。这是示例代码。
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");
}
});
该组合已在代码中设置为自动完成。应该为鼠标或键盘事件触发选择事件。使用鼠标进行的选择会触发选择事件,但是使用键盘进行的选择则不会。我想知道为什么。
我的日食不是最新的,它的版本是3.6.2,它附带的是swt JAR。我将不胜感激。
解决方法
由于选择事件不是通过键盘触发的,因此我向组合小部件添加了KeyListener,并检查用户是否按下了Enter键。
combo.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if (e.keyCode==SWT.CR || e.keyCode==SWT.KEYPAD_CR) { // Enter key
Combo c = (Combo) e.getSource();
System.out.println(c.getText());
// Do rest of processing
}
}
});
似乎我正在从列表框中移出所选项目。到目前为止,看来一切正常。
,选择事件不用于键盘事件,Combo#addSelectionListener的Javadoc在这里非常清楚:
-
当用户更改组合的列表选择时,会调用
-
widgetSelected
。 -
widgetDefaultSelected
通常是在按下组合键的文本区域时调用的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。