|
|
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Нужна помощь в следующей ситуации. Проект мигрирует с устаревающей технологии Swing на более свежую JavaFX. Переписывается форма входа в систему (логин/пароль). Интересует вопрос смены раскладки клавиатуры на Windows хостах. В Swing была возможность синхронизироваться с системной локалью (RUS|ENG). Ее можно было получить через компонент Component.getInputContext().getLocale(). Поток раз в полсекунды опрашивает системную локаль (которая могла изменится в системе просто по нажатию пользователем комбинации горячих клавиш), и если она изменилась, динамически меняет локаль внутри приложения, перерисовывает кнопку с текущим языком [RUS|ENG]. Аналогично и в обратную сторону, т.е. по нажатию кнопки [RUS|ENG] меняется системная локаль хоста. Вопрос. Как тоже самое реализовать на JavaFX? Никакой альтернативы Swing по данному вопросу не было найдено в сети. Как добиться синхронизации раскладки клавиатуры без использования java.awt.im.InputContext ? Надеюсь достаточно полно описал вопрос. Заранее спасибо за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 14:40 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmann, InputMethodEvent не пробовали слушать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 15:10 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Пробовал, не помогает. Насколько я понимаю InputMethodEvent для других целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 17:44 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmann, Тебе только Картинкой продублировать текущую раскладку клавы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 20:02 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Не только. Это должна быть Кнопка, а не просто Картинка. Связь такая: Нажатие на Кнопку -> смена надписи на Кнопке, изменение системной раскладки Изменение системной раскладки -> смена надписи на Кнопке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 09:27 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannЭто должна быть Кнопка вам делать нечего? Смена раскладки - горячие клавиши от ОСи или драйвера. А у вас ПРИКЛАДНОЕ программное обеспечение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 09:54 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannPetro123, Не только. Это должна быть Кнопка, а не просто Картинка. Связь такая: Нажатие на Кнопку -> смена надписи на Кнопке, изменение системной раскладки Изменение системной раскладки -> смена надписи на Кнопке О-о-о-о! И запустить всё это в браузере через WebStart! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:09 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Какие предложения насчет просто Картинки, которая дублирует текущую системную раскладку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:40 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrick, +1 В век полётов на Марс, пора уже такую кнопку)) 50 полезных команд для «Окей, Google» на русском https://lifehacker.ru/2016/10/14/ok-google-guide/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:41 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannКакие предложения код давай, который не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:42 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Не спорю с вами)) Не все задачи относятся к полету в космос, но так или иначе эта задача по каким-то причинам ставится, а значит требует решения. Вот конкретный код. ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleWithFixedDelay(() -> { System.out.println(Locale.getDefault()); }, 0, 2, TimeUnit.SECONDS); Как после смены системной локали мы бы узнали об этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 10:51 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Причина в том, что ПО разрабатывается под закрытый рабочий стол и для целевой аудитории, которая может даже горячих комбинаций не знать. Поэтому самый понятный для него способ - это нажать на ту самую кнопку. Такие дела) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:02 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannКак после смены системной локали мы бы узнали об этом? у нас интервью или собеседование? 1. Код оформить кнопкой вверху 2. В конструкторе формы входа текстовую метку на локаль и код 3. Дать ЧТО НЕ РАБОТАЕТ текстом, логами, скринами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:02 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannи для целевой аудитории, которая может даже горячих комбинаций не знать. я политикой не занимаюсь. В ТЗ прописывается явно, какой уровень пользователей должен быть. Если все остальные вопросы у вас решены - делайте. Всё за счёт работодателя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:06 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannкоторая может даже горячих комбинаций не знать. надеюсь, на каждой форме в углу есть кнопка - Справка? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:07 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannПроект мигрирует с устаревающей технологии Swing на более свежую JavaFX если исходить из технологий, то для постоянного слежения за МЕТКОЙ напр. текстовой локали можно использовать таймер . Потоки или ExecutorService тут оверхед IMHO. Это если у вас просто метка при открытии формы уже корректно работает и проблема только при обновлении в открытом положении окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:29 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
javafx.animation Class Timeline ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:30 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannКакие предложения насчет просто Картинки, которая дублирует текущую системную раскладку? Либо вызывать WinAPI через powershell, либо написать простейшую утилиту на C++ и её вызывать. Можно, конечно, и WinAPI через JNA присобачить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 11:58 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannPetro123, Причина в том, что ПО разрабатывается под закрытый рабочий стол и для целевой аудитории, которая может даже горячих комбинаций не знать. Поэтому самый понятный для него способ - это нажать на ту самую кнопку. Такие дела) Что-то типа киоска? А не случится так, что завтра потребуется запускать это в Linux? Я бы не стал так глубоко погружаться в API. Разве нельзя ограничится переключением локали внутри приложения и не трогать при этом OS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:31 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123 50 полезных команд для «Окей, Google» на русском https://lifehacker.ru/2016/10/14/ok-google-guide/ Да-да... шутку про "OK, Google! Open pornhub.com!" уже слышали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:33 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:33 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Привожу код на Swing. Каким-то чудом он работает без всякого WinApi. Вопрос заключается в том, как сделать тоже самое на JavaFX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:35 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Насчет потоков и таймера услышал вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:38 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, В Swing все работало без WinApi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:38 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:40 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrickуже слышали? нет)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:40 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Вы попросили пример кода, я сейчас вам его написал, убрав все лишнее и сделав элементарную панель, которой нет в реальности. Если хотите дальше троллить, это не по адресу. Если хотите помочь, велком. В любом случае, спасибо за ваше время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:46 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrick, Да. Под линукс чтобы работало, это прямо было бы вообще в идеале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:49 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannВы попросили пример кода, я сейчас вам его написал, убрав все лишнее и сделав элементарную панель, которой нет в реальности. вы читать не умеете? Я просил НОВЫЙ код по ТЗ из метки. А не кнопке. По кнопке к другому обращайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:50 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmann, А кто вам мешает вызвать InputContext.getInstance() из JavaFX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 12:51 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, InputContext.getInstance() не работает, как мне нужно. Она имеет смысл, когда привязывается к свинговым компонентам, к Window например. А мне необходимо полностью исключить все свинговые компоненты. Таким образом, я теряю возможность обращаться к InputContext. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:01 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannА мне необходимо полностью исключить все свинговые компоненты. InputContext.activate() не решает? А SwingNode пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:18 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
BlazkowiczInputContext.activate() не решает? Не туда посмотрел. Это у InputMethod-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:31 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, SwingNode это же просто обертка того же свингового компонента.. Хочется забыть про свинг совсем)) Наверняка же какая-то альтернатива для таких вещей в самом FX существует, неужели они этого не предусмотрели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 13:50 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannНаверняка же какая-то альтернатива для таких вещей в самом FX существует, неужели они этого не предусмотрели. Нет, не существует. Да, не предусмотрели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:07 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmann, Вот код "перехвата" события нажатия комбинации клавиш на клавиатуре: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. т.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:11 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
извиняйте опечатался... Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:14 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrickт.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей. А если мышью переключил? Или через Win+Space? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:17 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmannХочется забыть про свинг совсем)) В ваших сообщениях прослеживаются какие-то предрассудки по отношению к Swing. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:18 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrick, Это перехват клавиш а не раскладки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:26 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
GarrickKeshaShturmann, Вот код "перехвата" события нажатия комбинации клавиш на клавиатуре: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. т.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей. Да, и это действительно проблема. Потому что, как я уже сказал: 1. Уровень пользователей таков, что они могут вообще не знать никаких комбинаций. 2. Эти комбинации действительно могут быть разными на разных машинах, не стоит хардкодить какие-то конкретные комбинации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:37 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
BlazkowiczKeshaShturmannХочется забыть про свинг совсем)) В ваших сообщениях прослеживаются какие-то предрассудки по отношению к Swing. Не без этого :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:37 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123Garrick, Это перехват клавиш а не раскладки. Ну, да. Я так и "сказал". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:38 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
KeshaShturmann, Отсда вывод. Либо грамотное ТЗ, где сказано что Юзвери уровнем Ms Office. Либо лисапед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 14:46 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
java.awt.im.InputContext в JavaFX не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 16:05 |
|
||
|
Смена раскладки клавиатуры в JavaFX
|
|||
|---|---|---|---|
|
#18+
Garrickjava.awt.im.InputContext в JavaFX не работает. Ну, не то чтобы совсем не работает. :( Он, гад к peer-ам цепляется. Была мысль ему фейковый peer скормить, но очень уж там всё геморно. При запуске приложения можно выдрать текущую локаль, но потом, когда меняю layout, в приложении всё равно возвращается первоначальная. Потому что нативный хэндл нужно. В общем проще через JNA в WinAPI достучатся, чем яву хачить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 16:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2122839]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 396ms |

| 0 / 0 |
