Java:KeyListeners确实有效,但仅当我键入空格时有效

NNNNNNN:

这仅在我键入空格键时有效。当我按空格键时,它将打印“您输入的内容”,当我按向上箭头时,它不会进入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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法包含文件,但代码确实有效

在C ++中,delete []确实有效吗?

下拉确实有效但不是我想要的方式?

无法使用迭代器遍历字符串:但是我的带有索引的版本确实有效

MPNowPlayingInfoCenter没有显示,但后台播放确实有效

传递变量时用户定义的函数确实有效

IntelliJ IDEA:ClassNotFoundException如果运行调试,则执行/运行确实有效

Windows内存优化器是否确实有效(在Windows 10上)?

static_cast:转换功能模板-它们确实有效吗?

为什么reinterpret_cast在私人继承中确实有效

如何判断文件刷新在关闭文件之前确实有效?

禁用“ Windows防火墙”服务是否确实有效?

泽西岛客户端关闭InputStream响应-确实有效吗?

使用 sprintf() 在 R studio 中打印确实有效,但在 for 循环中无效?

使用匿名/动态类型的Linq调用在视图中确实有效

Eloquent::where() 条件未按预期工作,但 Collection::where() 确实有效

jQuery .ajaxComplete() 未解析的函数或方法。但它确实有效

对数据库的查询返回空或null,但是保存数据确实有效

Random.Next 确实有效,但它不会返回每个值

Mongodb仅在我对其进行sudo时有效

VideoView 仅在我旋转屏幕时有效

我的代码仅在插入随机MsgBox时有效

功能仅在翻转时有效

提取仅在刷新时有效

仅在调试javascript时有效

我的算法应该搜索二进制,但我不知道为什么它确实有效

联系表格直接指向contact.php,但我不希望它重定向。(发送电子邮件确实有效)

从给定的事实有效地获得图形

仅当我已经登录SSH时,无密码SSH才有效