java.awt.robot kepress在使用keyevent.vk\u组合键和字符组合时不适用于jpasswordfield
我有一个带有虚拟键盘的swing应用程序,运行在linux上。当我点击一个文本字段时,我打开了虚拟键盘,用户可以点击按键并可以输入。
在linux中,我们需要支持一些组合键字符。
例如:按组合键,然后按两次“s”键,就得到了ß
我在虚拟键盘中所做的是当用户按下组合键时,使用java.awt.robot.kepress我执行keyevent.vk\u compose的按键。当a被按下时,我做机器人,当a再次被按下时,我做同样的事情。
下面是我的总体做法。
Robot robot = new Robot();
// On pressing compose Key
robot.keyPress(KeyEvent.VK_COMPOSE);
robot.keyRelease(KeyEvent.VK_COMPOSE);
int c = 83; // Key s
// On First Press
robot.keyPress(c);
robot.keyRelease(c);
//On Second Press
robot.keyPress(c);
robot.keyRelease(c);
以上内容适用于jtextfield。当我按组合键,然后按两次,文本字段显示ß. 所以它工作得很好
但在jpasswordfield中,情况并非如此。按一次compose和s,就不会像预期的那样在字段中打印任何内容。但在第二次按下时,密码字段将打印圆点。但当我检查值时,它不是ß
原因是什么?jpasswordfield或robot有什么限制吗?
暂无答案!
目前还没有任何答案,快来回答吧!