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);
}
}
答案 0 :(得分:0)
keyTyped事件适用于可以打印的内容 - 键所代表的Unicode字符由键盘发送到系统输入。
您可以使用keyReleased方法捕获ENTER键事件,以便仅在释放键时调用它。