使用KeyEvent.VK_COMPOSE键和字符组合时,java.awt.Robot kepress无法用于JPasswordField
我有一个带有虚拟键盘的swing应用程序,并且正在Linux上运行。当我单击文本字段时,我打开虚拟键盘,并且用户可以单击键并能够输入。
在Linux中,我们需要支持一些撰写关键字符。
例如:按撰写键,然后再按两次键s会得到ß
我在虚拟键盘上所做的是当用户按下Compose键时,使用java.awt.Robot.kepress进行KeyEvent.VK_COMPOSE的按键操作。然后,当按下a时,我执行robot.kepress(83);再次按下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中有什么限制吗?