gpt4 book ai didi

java - SWT 文本 focusLost 事件发送多次

转载 作者:行者123 更新时间:2023-12-02 05:33:11 25 4
gpt4 key购买 nike

我使用 SWT Text 字段,我想防止它在没有输入文本或只有空格时失去焦点。如果是这种情况,我也想通知用户。

我当前的解决方案是在 FocusListenerfocusLost 方法中检查它。但是 focusLost 事件发送了两次,因此用户会收到两次通知,但这不是我想要的。

所以我的问题是:

  1. focusLost事件发送多次是否正常?还是我的申请有问题?
  2. 如果正常:是否有可能确保用户仅收到一次通知?

最佳答案

这里的代码工作得很好。 SWT.FocusOut 仅被触发:

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

final Text text = new Text(shell, SWT.BORDER);
text.addListener(SWT.FocusOut, new Listener()
{
@Override
public void handleEvent(Event event)
{
if (text.getText().trim().length() < 1)
{
Display.getDefault().asyncExec(new Runnable()
{
@Override
public void run()
{
System.out.println("Please enter something!");
if (text != null && !text.isDisposed())
{
text.setFocus();
text.forceFocus();
}
}
});
}
else
{
System.out.println("Nothing to see here, move along.");
}
}
});

new Text(shell, SWT.BORDER);

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

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

关于java - SWT 文本 focusLost 事件发送多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306418/

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