java – AWT / SWT中的IPhone密码字段?

我想为我的
eclipse产品创建一个特殊的密码对话框,它与屏幕键盘一起使用.

如果我可以使用像iPhone密码字段这样的组件,那将是非常好的.在此字段中,添加的字符显示一秒钟,在第二个字段后,它将转换为“*”字符以隐藏完整的密码.

是否存在jar /库,这是在AWT或SWT中实现的?

编辑:

我可以尝试从头开始实现它(SWT),但对于这些我将不得不为密码Text组件创建一个非常特殊和复杂的KeyListener.我必须捕获keyReleased事件并手动将字符设置到字段中.

到目前为止,我无法在网络上找到任何库.建议如何实施这一点也是受欢迎的.

最佳答案 这不是一个完整的答案,而不是一个讨论启动器,我不知道任何可以做到这一点的开箱即用的小部件.

我的第一个想法是继承swt Text小部件并覆盖setEchoChar等,但在查看代码后,这似乎并不可行,因为这个方法只是一个包装:

OS.SendMessage (handle, OS.EM_SETPASSWORDCHAR, echo, 0);

如果有人知道操作系统特定的低级实现,那可能会有所帮助.

无论如何,采取不同的方法.我会避免使用KeyListener并在Text-Widget上使用ModifyListener.

void addModifyListener(ModifyListener listener)

然后,您可以构建一个使用此侦听器捕获输入文本的包装器,将其附加到本地保存的字符串/ stringbuffer(或者例如Eclipse Preferencestore),并使用setText(String s)将修改后的全文发送到Text小部件,替换所有除了最后一个字符之外的字符(例如*).

myText.setText((s.substring(0, s.length()-1)).replaceAll("[\\s\\S]","*")+s.charAt(s.length()-1));

这有点像kludge,但它应该工作.

不那么直接的位是1秒的时间,没有拖延整个视图……

点赞