gpt4 book ai didi

Java ComboViewer 对编辑有反应,KeyListener?

转载 作者:行者123 更新时间:2023-11-29 09:17:35 29 4
gpt4 key购买 nike

我在我的插件中使用 JFace ComboViewer。作为一项便利功能,我想通过开始键入来更改当前选择。为此,我向底层组合元素添加了一个 KeyListener

我一开始输入就得到一个事件,但不幸的是我没有得到更改后的值,而只有我开始输入之前的值。

我的 keylistener,它引用了 ComboViewer 目前以这种方式使用react:

@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 中的 react 太早了,因为我输入的文本字段尚未更新,因此将总是提供旧信息?

也许我理解错了,但我无法想象我会如此困难地从文本字段中获取最新信息。有什么建议吗?

最佳答案

您应该改用 ModifyListener 并像这样查询组合文本框的当前值:

public void modifyText(ModifyEvent e)
{
String text = ((Combo) e.getSource()).getText();
...
}

但这只会给你文本框的内容。在您从其下拉列表中选择一个元素或使用 setSelection(..) 以编程方式设置一个元素之前,组合查看器不会有任何选择(据我所知)。可见文本基本上只是标签(就组合查看器而言)并且由于标签不必是唯一的,因此它不会尝试查找属于标签的模型元素。所以我不知道当有人在组合的文本框中输入时,您期望组合查看器的选择是什么。您到底想实现什么样的行为?

关于Java ComboViewer 对编辑有反应,KeyListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482130/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com