Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Можно ли как-то отображать динамически изменяющуюся раскладку на Java?

#java #клавиатура


Добрый день, я хочу сделать отображение активного языка раскладки клавиатуры в своём
приложении, просто потому что в полноэкранном режиме не удобно её контролить каждый
раз выходя из него. Если знаете хорошее решение поделитесь пожалуйста)
    


Ответы

Ответ 1



Отловить событие переключения раскладки в системе не используя нативных библиотек не получится. Однако можно получать Locale из InputContext нужного вам компонента или окна. Периодически опрашивая контекст вы можете обновлять отображения внутри вашего приложения. Пример на swing: import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { private static void createAndShowGUI() { final JFrame frame = new JFrame(""); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel label = new JLabel(frame.getInputContext().getLocale().toString()); frame.getContentPane().add(label); Timer timer = new Timer(2000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { label.setText(frame.getInputContext().getLocale().toString()); } }); timer.start(); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }

Комментариев нет:

Отправить комментарий