错误校验提示错误后,密码清空并将光标定位在密码框中
1、在Dialog上加
/**
* 密码错误后的处理操作
*/
private void dealErrorDrawpwd() {
final BillItem drawpwdItem = getQueryManager
().getBillCardPanel().getHeadItem("drawpwd");
drawpwdItem.setValue(null);
getQueryManager().getDialog().addWindowListener(
new WindowAdapter() {
public void windowActivated(WindowEvent e) {
((UIPasswordField) drawpwdItem.getComponent())
.requestFocusInWindow();
}
});
}
2、加密码框中加
final BillItem drawpwdItem = getQueryManager().getBillCardPanel()
.getHeadItem("drawpwd");
((UIPasswordField) drawpwdItem.getComponent())
.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ConditionVO[] conditionVOs = getQueryManager()
.getConditionVOs();
try {
if (null != conditionVOs)
checkAccount(conditionVOs);
} catch (BusinessException e1) {
e1.printStackTrace();
}
}
});
效果图:
☆注意看密码框中的颜色
组件说明:
requestFocusInWindow
protected boolean requestFocusInWindow(boolean temporary)如果此 Component 的顶层祖先已经是获得焦点的 Window,则请求此 Component 获得输入焦点。此组件对于所要许可的请求而言必须是可显示的、可见的和可获得焦点的。此方法会尽力完成该请求;但是在某些情况下可能无法完成。在此 Component 接收 FOCUS_GAINED 事件前,开发人员必须永远不能假定此 Component 是焦点所有者。
☆此外,虽然返回 true 表示请求可能成功了,但是在此组件接收 FOCUS_GAINED 事件前,开发人员必须永远不能假定此 Component 是焦点所有者。
此方法不能用于为根本不是 Component 的内容设置焦点所有者。应该使用 KeyboardFocusManager.clearGlobalFocusOwner。
返回:
如果焦点改变请求注定要失败,则返回 false;如果可能成功,则返回 true
按上面所说理解:
依赋在查询页面的BillCardPanel上,而BillCardPanel又是在UIDialog上的,所以,UIPasswordField控件的顶层,是UIDialog,即UIDialog是所有监听的入口。UIPasswordField想要设置焦点,需要在UIDialog接收事件被击活时设置