我使用SWT Text
字段,我希望防止它在没有输入文本或只是空格的情况下去焦点。如果是这样的话,我也想通知用户。
我目前的解决方案是在FocusListener
的{{1}}方法中查看。
但focusLost
事件被发送两次,因此用户将获得两次通知,这不是我想要的。
所以我的问题是:
focusLost
事件是否正常?或者我的申请中有什么问题吗?答案 0 :(得分: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();
}