Страницы

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

суббота, 27 октября 2018 г.

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

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


Ответ

Отловить событие переключения раскладки в системе не используя нативных библиотек не получится. Однако можно получать 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(); } }); } }

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

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