java.awt.Robot kepress не работает для JPasswordField при использовании KeyEvent.VK_COMPOSE комбинаций клавиш и символов
У меня есть приложение Swing с виртуальной клавиатурой, которое работает в Linux.Когда я нажимаю на текстовое поле, я открываю виртуальную клавиатуру, и пользователь может нажимать клавиши и может вводить.
В Linux нам необходимо поддерживать некоторые ключевые символы композиции.
Например: нажатие клавиши Compose, а затем дважды нажатие клавиши '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.Когда я нажимаю клавишу составления и затем дважды нажимаю s, в текстовом поле отображается ß .Так что работает нормально
Но то же самое не работает в JPasswordField.При нажатии compose и s один раз, ничего не печатается в поле, как ожидалось.Но при втором нажатии поле пароля печатает точку.Но когда я проверяю значение, это не так:
В чем причина?Есть ли какие-либо ограничения в JPasswordField или Robot?