文本字段不保持焦点(AncestorListener)
Textfield doesn't maintain focus (AncestorListener)
我正在使用 Camick's code 请求关注我的 JPasswordField
(最后):
第一次出现 showConfirmDialog
时,焦点在密码字段上,但是当对话框第二次出现时(由于密码错误,或再次单击按钮),焦点移动到'OK',下次再回到密码域。这是我的代码...
int resp;
String orgPwd;
String givenPwd;
JPasswordField pwd = new JPasswordField(10);
do {
pwd.setText("");
pwd.addAncestorListener(new RequestFocusListener());
diagResp = JOptionPane.showConfirmDialog(null, pwd, "Enter Password", JOptionPane.OK_CANCEL_OPTION);
givenPwd = new String(pwd.getPassword());
if (resp != JOptionPane.OK_OPTION) { return false; }
} while (!givenPwd.equals(orgPwd));
将pwd.addAncestorListener(new RequestFocusListener());
移到do {
之前,你只想添加一次,而不是每次循环循环...
此外,在使用代码之前,您需要阅读并理解代码的作用。
默认情况下,RequestFocusListener
会在 ancestorAdded
事件发生时自动删除,请尝试使用...
pwd.addAncestorListener(new RequestFocusListener(false));
...改为
我正在使用 Camick's code 请求关注我的 JPasswordField
(最后):
第一次出现 showConfirmDialog
时,焦点在密码字段上,但是当对话框第二次出现时(由于密码错误,或再次单击按钮),焦点移动到'OK',下次再回到密码域。这是我的代码...
int resp;
String orgPwd;
String givenPwd;
JPasswordField pwd = new JPasswordField(10);
do {
pwd.setText("");
pwd.addAncestorListener(new RequestFocusListener());
diagResp = JOptionPane.showConfirmDialog(null, pwd, "Enter Password", JOptionPane.OK_CANCEL_OPTION);
givenPwd = new String(pwd.getPassword());
if (resp != JOptionPane.OK_OPTION) { return false; }
} while (!givenPwd.equals(orgPwd));
将pwd.addAncestorListener(new RequestFocusListener());
移到do {
之前,你只想添加一次,而不是每次循环循环...
此外,在使用代码之前,您需要阅读并理解代码的作用。
默认情况下,RequestFocusListener
会在 ancestorAdded
事件发生时自动删除,请尝试使用...
pwd.addAncestorListener(new RequestFocusListener(false));
...改为