在我的登录 JPanel 中添加一个 KeyListener

Add a KeyListener in my Login JPanel

我有一个 JPanel 用作登录页面。此 JPanel 包含一个用于插入用户名的 JTextField,一个用于密码的 JPasswordField,显然还有一个确认 JButton.

我希望即使用户从其剪贴板中键入 ENTER 也会执行身份验证过程。

所以我让我的 class 实现 KeyListener,用

注册 class
addKeyListener(this);

并覆盖以下方法:

@Override
public void keyPressed(KeyEvent arg0) {
    if (arg0.getKeyCode() == KeyEvent.VK_ENTER)
        centrale.autentica(nome_utente.getText(), password.getPassword());
}

但没有任何反应。我注意到如果我什至将 JTextField 注册为关键事件的使用者,事情就会起作用,所以我应该这样做

addKeyListener(this);
myjtextfield.addKeyListener(this);
myjpasswordfield.addKeyListener(this);

但我觉得有点难看。谁能告诉我哪里错了?

不要使用 KeyListener。

一般来说,Swing 被设计为与键绑定一起使用。然而在这种情况下你甚至不需要键绑定。

对于 JTextField,您只需将 ActionListener 添加到文本字段,如果用户按下 Enter,将调用 ActionListener。

此外,您可能在表单上有一个 "Login" 按钮,因此您可以将登录按钮设置为默认按钮,以便在按下 Enter 键时激活它,即使该按钮没有焦点。

getRootPane().setDefaultButton( loginButton );

不要使用按键侦听器。只需将 ActionListener 添加到 JPasswordField;它应该响应按下 "Enter".