为什么使用这些 if 语句时这些代码块没有激活

  • 本文关键字:代码 激活 if 语句 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,KeyRelease,但问题是这个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);
}
}

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

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

最新更新