KeyListener不在文本框上工作?

时间:2015-11-26 20:22:42

标签: java

我在文本输入中添加了一个KeyListener,它似乎没有注册我按Enter的事实,因为它甚至没有打印出文本值。有什么想法吗?

        txtPort.addKeyListener(new KeyAdapter() {
            public void KeyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    System.out.println(txtName.getText());
                    System.out.println(txtAddress.getText());
                    System.out.println(txtPort.getText());
                    if(txtName.getText().equals("") && txtAddress.getText().equals("") && txtPort.getText().equals("")) {
                        String name = txtName.getText();
                        String address = txtAddress.getText();
                        int port = Integer.parseInt(txtPort.getText());

                        login(name, address, port);
                    }
                }
            }   
    }); 

3 个答案:

答案 0 :(得分:1)

不要使用KeyListener。

而只是向ActionListener添加JTextField。按下ActionListener键时将调用Enter

答案 1 :(得分:0)

你正在使用& (按位AND)运算符。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

你应该使用&& (逻辑AND)运算符。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

要检查是否填写了字符串,请使用isEmpty方法。

if (((txtName.getText() != null) && !txtName.getText().isEmpty()) &&
    ((txtAddress.getText() != null) && !txtAddress.getText().isEmpty()) &&
    ((txtPort.getText() != null) && !txtPort.getText().isEmpty()))

答案 2 :(得分:0)

只需提交我的评论作为可能的答案。改变第一行:

lblPort.addKeyListener(new KeyAdapter() {

txtPort.addKeyListener(new KeyAdapter() {

我认为你将监听器连接到错误的控件,它永远不会触发。您稍后调用txtPort.GetText(),因此这似乎是文本框控件的正确名称。