java - 文本字段不保持焦点(AncestorListener)

标签 java swing user-interface jpasswordfield

我正在使用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));

最佳答案

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

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

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

pwd.addAncestorListener(new RequestFocusListener(false));

...相反

关于java - 文本字段不保持焦点(AncestorListener),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575749/

相关文章:

java - 随机选择一组 double

java - 哪些 Swing 容器可以设置为可聚焦?

user-interface - 从 Controller 内关闭阶段

linux - 将 EFL 用于嵌入式 UI 时,我们应该使用 Elementary 还是 Edje?

java - 获取 build.gradle 文件作为 .class 文件

java - 如何在 java 中检查 MatOfKeyPoint?

java - 在Java中比较两个日期的最佳方法(日期标准)?

Java Swing 背景图像重复和最大化窗口

java - 如何向表添加监听器?

Android 用户界面问题。实现指导