使用这些if语句时,为什么这些代码块不会激活

时间:2017-07-15 17:10:23

标签: java

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;

public class Test implements KeyListener

我有一个JTextField:

private static JTextField tf = new JTextField();

在主要方法中我有:

tf.addKeyListener(new Test());

然后我有抽象方法KeyTyped,KeyPressed,KeyReleased但问题是这个if语句中的代码:if(e.getKeyCode()== KeyEvent.VK_ENTER)没有激活。

@Override
public void keyTyped(java.awt.event.KeyEvent e){
    if(e.getKeyCode() == KeyEvent.VK_ENTER){
         System.out.println("This is working");
    }
}

如果我把它拿出来:

if(e.getKeyCode() == KeyEvent.VK_ENTER)

离开System.out.println();它激活但我不想为几个条件编写代码,所以我可以为不同的键创建一个特定的函数。

import javax.swing.*;
import java.awt.event.KeyListener;

/**
 * Created by Kyle on 7/15/2017.
 */
 public class KeyEvent implements KeyListener {
 @Override
 public void keyTyped(java.awt.event.KeyEvent e) {
    if(e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER){
        System.out.println("Test");
    }
 }

 @Override
 public void keyPressed(java.awt.event.KeyEvent e) {

 }

 @Override
 public void keyReleased(java.awt.event.KeyEvent e) {

 }

 public static void main(String[] args){
    JFrame f = new JFrame();
    f.setSize(500, 600);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.addKeyListener(new KeyEvent());
    f.setVisible(true);
    }
 }

1 个答案:

答案 0 :(得分:0)

keyTyped事件适用于可以打印的内容 - 键所代表的Unicode字符由键盘发送到系统输入。

您可以使用keyReleased方法捕获ENTER键事件,以便仅在释放键时调用它。