【问题标题】:Textfield doesn't maintain focus (AncestorListener)文本字段不保持焦点 (AncestorListener)
【发布时间】:2015-02-18 04:01:44
【问题描述】:

我正在使用Camick's code 请求关注我的JPasswordField(最后):

第一次出现showConfirmDialog时焦点在密码字段,但第二次出现对话框时(由于密码错误,或再次单击按钮),焦点移至“确定”,然后下次返回密码字段。这是我的代码...

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));

【问题讨论】:

    标签: java swing user-interface jpasswordfield


    【解决方案1】:

    pwd.addAncestorListener(new RequestFocusListener()); 移动到do { 之前,您只想添加一次,而不是每次循环循环...

    此外,您需要在使用之前阅读并理解代码的作用。

    默认情况下RequestFocusListener会在ancestorAdded事件发生时自动移除,尝试使用...

    pwd.addAncestorListener(new RequestFocusListener(false));
    

    ...改为

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多