【发布时间】:2011-12-12 22:56:29
【问题描述】:
我在我的插件中使用了 JFace ComboViewer。作为一项便利功能,我想通过开始输入来更改当前选择。 为此,我向底层 Combo 元素添加了一个 KeyListener
我一开始输入就得到一个事件,但不幸的是我没有得到改变的值,而只有我开始输入之前的那个值。
我的 keylistener,它引用了 ComboViewer 当前以这种方式做出的反应:
@Override
public void keyPressed(KeyEvent e) {
ISelection selection = combo.getSelection(); //combo is the ComboViewer
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
IStructuredSelection strucSel = (IStructuredSelection) selection;
node = (TreeNode) strucSel.getFirstElement();
...}
我输入的第一个字符实际上通过 if 语句,任何进一步输入的字符都会导致选择为空。
那么我如何始终获得“当前选择”以及如何获得更改后的值,似乎在 keylistener 中做出反应还为时过早,因为我输入的文本字段尚未更新,因此将总是提供旧信息?
也许我理解错了,但我无法想象从文本字段中获取最新信息会如此困难。 有什么建议吗?
【问题讨论】:
标签: java eclipse swt jface keylistener