为什么使用键盘完成选择时没有触发选择事件?
Why Selection event not triggered when selection is done using keyboard?
我有这个使用 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");
}
});
已在代码中设置自动完成组合。选择事件应该被鼠标或键盘事件触发。使用鼠标的选择会触发选择事件,但使用键盘的选择不会。我想看看为什么。
我的eclipse不是最新的,它的版本是3.6.2和它附带的swt JARs。如果有任何帮助,我将不胜感激。
由于选择事件不是通过键盘触发的,我向组合小部件添加了一个 KeyListener 并检查用户是否按下了回车键。
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
通常在按下 ENTER 键时调用组合的文本区域。
我有这个使用 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");
}
});
已在代码中设置自动完成组合。选择事件应该被鼠标或键盘事件触发。使用鼠标的选择会触发选择事件,但使用键盘的选择不会。我想看看为什么。
我的eclipse不是最新的,它的版本是3.6.2和它附带的swt JARs。如果有任何帮助,我将不胜感激。
由于选择事件不是通过键盘触发的,我向组合小部件添加了一个 KeyListener 并检查用户是否按下了回车键。
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
通常在按下 ENTER 键时调用组合的文本区域。