gpt4 book ai didi

java - SWT 文本焦点和默认选择(返回键)事件

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

我的 RCP 有一个奇怪的问题。我不使用 Linux 进行开发,所以我对常见错误的了解非常少。我正在使用 Ubuntu 11.10 来试用 RCP。

在我的 RCP 中,我有一个 SWT 文本,它附加了两个监听器 - 一个用于焦点 (FocusAdapter),另一个用于 SWT.DefaultSelection。在 FocusAdapter 中,我实现了 focusLost 方法。

行为是这样的,如果当用户编辑文本并按下返回键时,SWT.DefaultSelection 监听器的handleEvent将被调用并显示一条消息以确认新文本并更新 Text 字段。如果用户编辑文本但没有按回车键,只是在Text 字段外单击,则调用focusLost 事件恢复将文本恢复为原始文本 (text.setText(originalText);)。

当我从 Eclipse 启动它时,这似乎工作正常,但当我通过 Maven+Tycho 导出产品时,该行为似乎停止工作。发生的情况是,当用户编辑文本时,无论用户是否按下返回键,或者只是在 Text 字段外单击,它都会恢复为原始文本。也不会显示用于确认已编辑文本的消息对话框。

据我所知,似乎只使用了 focusLost 事件,返回键没有任何效果。如果这是显而易见的事情,我深表歉意,但我没有在我用于主要开发的 Windows 机器上遇到过这种情况。

最佳答案

您可以改为监听 SWT.Traverse 并检查 event.detail 是否等于 SWT.TRAVERSE_RETURN。我在 Linux 上对其进行了测试,它可以正常工作:

public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());

final Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.Traverse, new Listener()
{
@Override
public void handleEvent(Event event)
{
if(event.detail == SWT.TRAVERSE_RETURN)
{
System.out.println("Enter pressed");
}
}
});

shell.pack();
shell.open();

while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}

这里有一个相关的问题:

SWT Cross-Platform Enter Detection

关于java - SWT 文本焦点和默认选择(返回键)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16817725/

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