【问题标题】:Check if integer is a key in keyboard检查整数是否是键盘中的键
【发布时间】:2018-09-30 15:58:31
【问题描述】:

我是 java swing 新手。我在检查数据库中获取的整数是否是键盘中的有效键时遇到问题。

如果 int 是有效的键码,是否有一些内置函数返回 true 或 false?

类似的东西

KeyEvent.getKeyText(119);
= F8(原来如此)

KeyEvent.getKeyText(134319);
= 未知(所以它是假的)

谢谢!

【问题讨论】:

  • 公共静态布尔函数ThatReturnsTrueOrFalseIfIntIsAValidKeycode(int a) { return !java.awt.event.KeyEvent.getKeyText(a).startsWith("Unknown keyCode:"); }
  • 澄清一下,如果键码是用户键盘上的键,您正在寻找一种返回true 的方法,对吗?例如,如果我使用的是没有 Home 键的紧凑型键盘,那么该方法将为 KeyEvent.VK_HOME 返回 false。 (如果指定的键码是 KeyEvent 类定义的代码之一,那么编写一个简单地返回 true 的方法会相当容易,但听起来这不是你想要的。)

标签: java swing key keystroke


【解决方案1】:

您可以查看 KeyEvent 类的源代码,注意在执行 getKeyText(int keyCode) 方法时,如果没有找到匹配项,则会计算并返回特定值,创建它使用默认连接:只需执行相同的控制并检查在您的代码上调用 getKeyText() 是否返回该值。

我刚刚对此进行了测试,它似乎可以工作:

public static boolean isValidCode(int keyCodeToCheck) {
        String unknown = Toolkit.getProperty("AWT.unknown", "Unknown");
        return !KeyEvent.getKeyText(keyCodeToCheck).equals(unknown + " keyCode: 0x" + Integer.toString(keyCodeToCheck, 16));
}

希望对你有帮助,祝你有美好的一天:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多