这仅在我键入空格键时有效。当我按空格键时,它将打印“您输入的内容”,当我按向上箭头时,它不会进入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();
}
}
使用keyReleased
代替keyTyped
。
如果您阅读的JavaDocs KeyListener
,则会将您发送到的JavaDocs KeyEvent
,其中指出
“键键入”事件是较高级别的事件,通常不依赖于平台或键盘布局。它们是在输入Unicode字符时生成的,是查找字符输入的首选方法。在最简单的情况下,按键事件是通过一次按键(例如“ a”)产生的。但是,字符通常是通过一系列按键(例如,“ shift” +“ a”)产生的,并且从按键事件到键键入事件的映射可能是多对一或多对多的。通常不需要释放键来生成键类型的事件,但是在某些情况下,直到释放键后才生成键类型的事件(例如,在Windows中通过Alt-Numpad方法输入ASCII序列)。对于不生成Unicode字符的键(例如,操作键,
这里重要的是
对于不生成Unicode字符的键(例如,操作键,修饰键等),不会生成任何键类型的事件。
这就是为什么keyTyped
没有被调用的原因。
在使用它时,您应该改用键绑定API,这样就避免了后续询问,即为什么您KeyListener
根本停止响应任何内容
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句