Java:KeyListeners确实可以工作,但只在我键入空格时工作
这仅在我键入空格键时有效。当我在空格键上单击时,它将打印“您键入的”,当我单击向上箭头时,它不会进入if语句。 我怎样才能使它打印“k”当我标签向上箭头
import javax.swing.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Tester extends JPanel{
JFrame frame;
public Tester(){
frame = new JFrame("Testing...");
TestK k = new TestK();
setPreferredSize(new Dimension(800, 700));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(800,700));
frame.pack();
frame.setVisible(true);
frame.addKeyListener(k);
}
public class TestK implements KeyListener{
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){
int key = e.getKeyCode();
System.out.println("You typed");
if(key == KeyEvent.VK_UP){
System.out.println("K");
}
}
}
public static void main(String[] argv){
Tester t = new Tester();
}
}
# 1 楼答案
用
keyReleased
代替keyTyped
如果您阅读了} 的JavaDocs,其中
KeyListener
的JavaDocs,您将被发送到^{这里最重要的部分是
这就是为什么没有调用
keyTyped
当你在做这件事时,你应该使用key bindings API来代替它,这将避免需要一个关于为什么你的
KeyListener
已经停止响应任何东西的后续问题