java - 在我的登录 JPanel 中添加 KeyListener

标签 java swing keylistener jcomponent

我有一个用作登录页面的 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/

相关文章:

java - 为什么我的 Sprite 会沿对角线移动?

java - 如何在jtextbox上实时验证正则表达式?

java - JPanel 不响应 KeyListener 事件

java - APIDemos 示例中的 Android 主题

java - Perforce值得吗?

两个相关的java类中的java.lang.NullPointerException

java - Liferay : Configuring Multiple Spring MVC Portlets in one liferay plugin project with one common controller and multiple landing pages

Java JPanel 不可见

java - 根据内容调整框架大小

java - 更改 JTable 关键操作的行为