在我的登录 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".
我有一个 JPanel
用作登录页面。此 JPanel
包含一个用于插入用户名的 JTextField
,一个用于密码的 JPasswordField
,显然还有一个确认 JButton
.
我希望即使用户从其剪贴板中键入 ENTER
也会执行身份验证过程。
所以我让我的 class 实现 KeyListener,用
注册 classaddKeyListener(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".