我有一个用作登录页面的 JPanel
。这个JPanel
包含一个用于插入用户名的JTextField
,一个用于插入密码的JPasswordField
,显然还有一个确认JButton
。
我希望即使用户从剪贴板中输入 ENTER
也会执行身份验证过程。
所以我让我的类实现 KeyListener,注册该类
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 被设计为与键绑定(bind)一起使用。但是在这种情况下,您甚至不需要按键绑定(bind)。
对于 JTextField
,您只需将 ActionListener
添加到文本字段,如果用户按 Enter 键,ActionListener 将被调用。
此外,您的表单上可能有一个“登录”按钮,因此您可以将登录按钮设置为默认按钮,这样即使该按钮没有焦点,按下 Enter 键时也会激活该按钮。
getRootPane().setDefaultButton( loginButton );
关于java - 在我的登录 JPanel 中添加 KeyListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748578/