Что будет getDesktopProperty() для Linux?
Я должен прочитать высококонтрастный режим нативной ОС и применить настройки на моем продукте. Теперь для Windows я сделал что-то вроде этого:
try {
Toolkit toolkit = Toolkit.getDefaultToolkit();
boolean highContrast = (Boolean)toolkit.getDesktopProperty("win.highContrast.on" );
}catch(Exception e) {
}
Это хорошо работает для Windows, но мне нужно свойство рабочего стола, чтобы прочитать настройки высокой контрастности Linux. Может кто-нибудь сказать, пожалуйста, что будет свойство рабочего стола для Linux?
1 ответ
Я думаю, что нет хорошего способа проверить высококонтрастный режим в Linux, когда вы используете Java или нет (у самого X11 нет высококонтрастной функции, а в Linux имеется огромное разнообразие сред пользовательского интерфейса, и каждая из них может реализовать высокую контрастность по-своему).
Строго говоря, у вас будет много проблем с этим и в Windows (см. Здесь или здесь).
Есть два возможных варианта решения проблемы: просто используйте системные цвета в вашем пользовательском интерфейсе с помощью класса SystemColor (если это именно то, что вам нужно) или используйте тот же класс для анализа контрастности между текущими цветами переднего плана и фона (если вам нужно знать, системные цвета отличаются высокой контрастностью). Вы также можете проверить название системной темы, но это довольно ненадежный метод.