不同的Enter和鼠标单击事件

时间:2013-08-15 15:28:48

标签: java swing button awt keylistener

我有一个调用方法的按钮,在这个方法中它调用另一个方法连接到数据库并返回结果,如果结果为正,则更改标签并使按钮启用,如果结果为负,则按钮仍然被禁用

问题是,我在TF中设置了一个keytyped事件,如果有人在其中键入新内容,请禁用btnEditar:

            public void keyTyped(KeyEvent e) {                  
                    btnEditar.setEnabled(false);
                    btnDeletar.setEnabled(false);
            }

我不希望此事件“捕获”输入以禁用该按钮 有办法做到这一点,或者我必须以另一种逻辑方式思考?

2 个答案:

答案 0 :(得分:2)

正如其他人所指出的,除了使用KeyListener之外,还有其他方法可以做到这一点。我将在下面回复你原来的尝试。 KeyListener是一个功能强大且易于使用的工具。

使用keyPressed代替keyTyped,然后您将拥有一个有效的密钥代码,可用于忽略输入印刷机:

public void keyPressed(KeyEvent e) { // not keyTyped!
    if (e.getKeyCode() != KeyEvent.VK_ENTER) {
        btnEditar.setEnabled(false);
        btnDeletar.setEnabled(false);
    }
}

如果您出于某种原因坚持使用keyTypedyou won't have a key code available,但是您可以通过检查字符换行或回车来涵盖大多数情况:

public void keyTyped(KeyEvent e) {
    if (e.getKeyChar() != 13 && e.getKeyChar() != 10) {
        btnEditar.setEnabled(false);
        btnDeletar.setEnabled(false);
    }
}

答案 1 :(得分:1)

使用DocumentListener侦听对文档中文本的更改。阅读How to Write a Document Listener上的Swing教程中的部分。