java.awt.Robot Kepress не работает для JPasswordField при использовании KeyEvent.VK_COMPOSE комбинации клавиш и символов - PullRequest
0 голосов
/ 07 декабря 2018

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?

...