KeyStroke类的getKeyStroke(String s)方法 大家好! 我想问问这个方法里面的参数到底要怎么传呢?假如我想用Ctrl+b 这个组合键 但是用这个方法(getKeyStroke("ctrl b"))返回的总是null值 不管我传什么进去 只要是String型的参数 返回都是null。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道 没用过这个方法啊你怎么不穿 event呢 楼主看看API吧分析字符串并返回 KeyStroke。字符串必须具有以下语法: <modifiers>* (<typedID> | <pressedReleasedID>) modifiers := shift | control | ctrl | meta | alt | altGraph typedID := typed <typedKey> typedKey := string of length 1 giving Unicode character. pressedReleasedID := (pressed | released) key key := KeyEvent key code name, i.e. the name following "VK_". 如果没有指定是键入、按下还是释放,则假定为按下。以下是一些示例: "INSERT" => getKeyStroke(KeyEvent.VK_INSERT, 0); "control DELETE" => getKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK); "alt shift X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK); "alt shift released X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true); "typed a" => getKeyStroke('a'); 为了维持向后兼容性,指定 null String 或格式不正确的 String 将返回 null。 getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK);就是你想要的了 可以试试楼上的getKeyStroke("ctrl")getKeyStroke("b")用2个组合,不知道可以 有发帖的时间 api自己看完都回了 哎 将近一年前的帖子了,不知道回复能不能对后人有用。顺便鄙视一下楼上6楼一类的人物,真是站着说话不腰疼,您试着通过查阅API文档解决过这个问题没有?其实楼主的问题很好解决,只要把那个String参数从“ctrl b”换成“ctrl B”即可。记住里面的typedKey参数必须要大写!这是一个很诡异的问题。显然,导致getKeyStroke返回null是因为参数String的格式不对。因此问题就来了,难道说指定键盘上的单个字母键只能够用大写字母吗?这种约定的出处在哪里?关于这些,API文档只字未提,也没有提出警告。顺便说一下,JDK中java.awt.event.KeyEvent里面定义的KeyCode并没有对大小写做出区分。我想这样做的原因是KeyStroke设计的时候就“默认”不会用来进行编辑而只用来进行控制,因此不区分大小写无所谓。吐嘈一下:JDK API的文档真TMD烂!跟Visual Studio的哪怕是随机文档相比真是天上地下的区别。 synchronized 问题 TextFeild如何实现数据关联 高份求助紧急问题,急在先线等,解决了马上给分 请教:java 能否实现异型窗体 一个编程问题,欢迎大家提供最优方案 各位仁人志士快进来看看啊!! HasnMap的问题 StarUML画时序图的小问题 java初学者必读-经验总结(二) 是高手的请回答,dos 6.22下有支持的java虚拟机吗?我很想找一个,理论上我觉得应该有. 关于java登陆界面 java如何使某方法中的while每隔一秒执行一次
<modifiers>* (<typedID> | <pressedReleasedID>) modifiers := shift | control | ctrl | meta | alt | altGraph
typedID := typed <typedKey>
typedKey := string of length 1 giving Unicode character.
pressedReleasedID := (pressed | released) key
key := KeyEvent key code name, i.e. the name following "VK_".
如果没有指定是键入、按下还是释放,则假定为按下。以下是一些示例:
"INSERT" => getKeyStroke(KeyEvent.VK_INSERT, 0);
"control DELETE" => getKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK);
"alt shift X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
"alt shift released X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);
"typed a" => getKeyStroke('a');
为了维持向后兼容性,指定 null String 或格式不正确的 String 将返回 null。
就是你想要的了
可以试试楼上的
getKeyStroke("ctrl")
getKeyStroke("b")
用2个组合,不知道可以