You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

输入下划线触发无效键码错误,转Kotlin后问题未解决求助

解决下划线输入触发IllegalArgumentException的问题

你在模拟键盘输入下划线时遇到的键码错误,不管是Java还是转成Kotlin版本都没解决,我来帮你梳理下问题根源和可行的解决方案:

问题根源

下划线_并不是通过单一按键就能输入的——在Windows系统上,它需要按下Shift + 减号(-)的组合键才能输出。而你的代码逻辑应该是尝试直接将字符映射为单个键码,找不到对应键码时就触发了default分支的异常:

default: throw new IllegalArgumentException("Cannot type character " + character);

Kotlin版本的逻辑也是同理,所以才会出现完全相同的错误提示。

解决方案

你需要在代码中为下划线单独添加组合键的处理逻辑,而不是去寻找不存在的“下划线专属键码”:

Java版本修改

在你的字符判断分支中加入:

case '_':
    robot.keyPress(KeyEvent.VK_SHIFT);
    robot.keyPress(KeyEvent.VK_MINUS);
    robot.keyRelease(KeyEvent.VK_MINUS);
    robot.keyRelease(KeyEvent.VK_SHIFT);
    break;

Kotlin版本修改

对应的Kotlin分支代码:

'_' -> {
    robot.keyPress(KeyEvent.VK_SHIFT)
    robot.keyPress(KeyEvent.VK_MINUS)
    robot.keyRelease(KeyEvent.VK_MINUS)
    robot.keyRelease(KeyEvent.VK_SHIFT)
}

额外建议

除了下划线,像@#$%^&*()这类特殊字符大多都需要Shift组合键输入,你可以按照同样的逻辑,把这些字符的组合键处理都补充到代码中,避免后续再出现类似的异常。另外,如果你的Robot类支持type(char c)方法,也可以直接调用这个方法,它会自动处理组合键的输入逻辑,兼容性更好。

内容的提问来源于stack exchange,提问作者SL5net

火山引擎 最新活动