powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Смена раскладки клавиатуры в JavaFX
46 сообщений из 46, показаны все 2 страниц
Смена раскладки клавиатуры в JavaFX
    #39471539
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!
Нужна помощь в следующей ситуации.
Проект мигрирует с устаревающей технологии Swing на более свежую JavaFX. Переписывается форма входа в систему (логин/пароль). Интересует вопрос смены раскладки клавиатуры на Windows хостах.

В Swing была возможность синхронизироваться с системной локалью (RUS|ENG). Ее можно было получить через компонент Component.getInputContext().getLocale().
Поток раз в полсекунды опрашивает системную локаль (которая могла изменится в системе просто по нажатию пользователем комбинации горячих клавиш), и если она изменилась, динамически меняет локаль внутри приложения, перерисовывает кнопку с текущим языком [RUS|ENG].
Аналогично и в обратную сторону, т.е. по нажатию кнопки [RUS|ENG] меняется системная локаль хоста.

Вопрос. Как тоже самое реализовать на JavaFX? Никакой альтернативы Swing по данному вопросу не было найдено в сети. Как добиться синхронизации раскладки клавиатуры без использования java.awt.im.InputContext ?

Надеюсь достаточно полно описал вопрос. Заранее спасибо за любую помощь.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471570
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmann,

InputMethodEvent не пробовали слушать?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471674
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Пробовал, не помогает. Насколько я понимаю InputMethodEvent для других целей.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmann,
Тебе только Картинкой продублировать текущую раскладку клавы?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471918
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Не только. Это должна быть Кнопка, а не просто Картинка. Связь такая:
Нажатие на Кнопку -> смена надписи на Кнопке, изменение системной раскладки
Изменение системной раскладки -> смена надписи на Кнопке
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannЭто должна быть Кнопка
вам делать нечего?
Смена раскладки - горячие клавиши от ОСи или драйвера.
А у вас ПРИКЛАДНОЕ программное обеспечение.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471948
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannPetro123,

Не только. Это должна быть Кнопка, а не просто Картинка. Связь такая:
Нажатие на Кнопку -> смена надписи на Кнопке, изменение системной раскладки
Изменение системной раскладки -> смена надписи на Кнопке
О-о-о-о! И запустить всё это в браузере через WebStart!
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471979
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Какие предложения насчет просто Картинки, которая дублирует текущую системную раскладку?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471980
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,
+1
В век полётов на Марс, пора уже такую кнопку))
50 полезных команд для «Окей, Google»​ на русском

https://lifehacker.ru/2016/10/14/ok-google-guide/
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471982
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannКакие предложения
код давай, который не работает
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39471999
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Не спорю с вами)) Не все задачи относятся к полету в космос, но так или иначе эта задача по каким-то причинам ставится, а значит требует решения.

Вот конкретный код.

ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleWithFixedDelay(() -> {
System.out.println(Locale.getDefault());
}, 0, 2, TimeUnit.SECONDS);

Как после смены системной локали мы бы узнали об этом?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472018
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Причина в том, что ПО разрабатывается под закрытый рабочий стол и для целевой аудитории, которая может даже горячих комбинаций не знать. Поэтому самый понятный для него способ - это нажать на ту самую кнопку.
Такие дела)
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472019
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannКак после смены системной локали мы бы узнали об этом?
у нас интервью или собеседование?
1. Код оформить кнопкой вверху
2. В конструкторе формы входа текстовую метку на локаль и код
3. Дать ЧТО НЕ РАБОТАЕТ текстом, логами, скринами.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472025
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannи для целевой аудитории, которая может даже горячих комбинаций не знать.
я политикой не занимаюсь.
В ТЗ прописывается явно, какой уровень пользователей должен быть.
Если все остальные вопросы у вас решены - делайте. Всё за счёт работодателя.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472027
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannкоторая может даже горячих комбинаций не знать.
надеюсь, на каждой форме в углу есть кнопка - Справка? ))
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472056
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannПроект мигрирует с устаревающей технологии Swing на более свежую JavaFX
если исходить из технологий, то для постоянного слежения за МЕТКОЙ напр. текстовой локали можно использовать таймер .
Потоки или ExecutorService тут оверхед IMHO.
Это если у вас просто метка при открытии формы уже корректно работает и проблема только при обновлении в открытом положении окна.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472057
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javafx.animation
Class Timeline
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472111
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannКакие предложения насчет просто Картинки, которая дублирует текущую системную раскладку?
Либо вызывать WinAPI через powershell, либо написать простейшую утилиту на C++ и её вызывать. Можно, конечно, и WinAPI через JNA присобачить.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472157
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannPetro123,

Причина в том, что ПО разрабатывается под закрытый рабочий стол и для целевой аудитории, которая может даже горячих комбинаций не знать. Поэтому самый понятный для него способ - это нажать на ту самую кнопку.
Такие дела)
Что-то типа киоска? А не случится так, что завтра потребуется запускать это в Linux? Я бы не стал так глубоко погружаться в API. Разве нельзя ограничится переключением локали внутри приложения и не трогать при этом OS?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472162
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 50 полезных команд для «Окей, Google»​ на русском

https://lifehacker.ru/2016/10/14/ok-google-guide/
Да-да... шутку про "OK, Google! Open pornhub.com!" уже слышали?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472164
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472165
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Привожу код на Swing. Каким-то чудом он работает без всякого WinApi. Вопрос заключается в том, как сделать тоже самое на JavaFX?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472169
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Насчет потоков и таймера услышал вас.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472172
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

В Swing все работало без WinApi
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472175
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannPetro123,

какой изврат по дизайну(
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472176
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickуже слышали?
нет))
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472188
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Вы попросили пример кода, я сейчас вам его написал, убрав все лишнее и сделав элементарную панель, которой нет в реальности.
Если хотите дальше троллить, это не по адресу. Если хотите помочь, велком.
В любом случае, спасибо за ваше время.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472193
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick,

Да. Под линукс чтобы работало, это прямо было бы вообще в идеале.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472195
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannВы попросили пример кода, я сейчас вам его написал, убрав все лишнее и сделав элементарную панель, которой нет в реальности.
вы читать не умеете?
Я просил НОВЫЙ код по ТЗ из метки. А не кнопке. По кнопке к другому обращайтесь.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472198
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmann,

А кто вам мешает вызвать InputContext.getInstance() из JavaFX?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472207
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

InputContext.getInstance() не работает, как мне нужно. Она имеет смысл, когда привязывается к свинговым компонентам, к Window например. А мне необходимо полностью исключить все свинговые компоненты. Таким образом, я теряю возможность обращаться к InputContext.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472226
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannА мне необходимо полностью исключить все свинговые компоненты.
InputContext.activate() не решает? А SwingNode пробовали?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472238
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczInputContext.activate() не решает?
Не туда посмотрел. Это у InputMethod-а.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472264
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

SwingNode это же просто обертка того же свингового компонента.. Хочется забыть про свинг совсем))
Наверняка же какая-то альтернатива для таких вещей в самом FX существует, неужели они этого не предусмотрели.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannНаверняка же какая-то альтернатива для таких вещей в самом FX существует, неужели они этого не предусмотрели.
Нет, не существует. Да, не предусмотрели.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472288
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Test extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        Scene scene = new Scene(new Pane());        
        scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
            if (e.getCode() == KeyCode.ALT && e.isAltDown()) {
                System.out.println("CTRL+ALT");
            }
        });
        stage.setScene(scene);
        stage.show();
    }
}



т.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472295
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняйте опечатался...

Код: java
1.
2.
3.
 if (e.getCode() == KeyCode.ALT && e.isShiftDown()) {
        System.out.println("SHIFT+ALT");
 }
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472300
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickт.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей.
А если мышью переключил? Или через Win+Space?
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472302
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmannХочется забыть про свинг совсем))
В ваших сообщениях прослеживаются какие-то предрассудки по отношению к Swing.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472308
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,
Это перехват клавиш а не раскладки.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472321
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Test extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        Scene scene = new Scene(new Pane());        
        scene.addEventFilter(KeyEvent.KEY_PRESSED, e -> {
            if (e.getCode() == KeyCode.ALT && e.isAltDown()) {
                System.out.println("CTRL+ALT");
            }
        });
        stage.setScene(scene);
        stage.show();
    }
}



т.к. меня раскладка по CTRL+ALT переключается. Но тут проблема в том, что нужно заранее знать эту комбинацию и она должна быть одинаковой у всех пользователей.

Да, и это действительно проблема. Потому что, как я уже сказал:
1. Уровень пользователей таков, что они могут вообще не знать никаких комбинаций.
2. Эти комбинации действительно могут быть разными на разных машинах, не стоит хардкодить какие-то конкретные комбинации.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472322
KeshaShturmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczKeshaShturmannХочется забыть про свинг совсем))
В ваших сообщениях прослеживаются какие-то предрассудки по отношению к Swing.

Не без этого :-)
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472324
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Garrick,
Это перехват клавиш а не раскладки.
Ну, да. Я так и "сказал".
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472335
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KeshaShturmann,
Отсда вывод. Либо грамотное ТЗ, где сказано что Юзвери уровнем Ms Office.
Либо лисапед.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472432
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java.awt.im.InputContext в JavaFX не работает.
...
Рейтинг: 0 / 0
Смена раскладки клавиатуры в JavaFX
    #39472440
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickjava.awt.im.InputContext в JavaFX не работает.
Ну, не то чтобы совсем не работает.
:( Он, гад к peer-ам цепляется. Была мысль ему фейковый peer скормить, но очень уж там всё геморно.
При запуске приложения можно выдрать текущую локаль, но потом, когда меняю layout, в приложении всё равно возвращается первоначальная. Потому что нативный хэндл нужно.
В общем проще через JNA в WinAPI достучатся, чем яву хачить.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Смена раскладки клавиатуры в JavaFX
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]