Что будет 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 (если это именно то, что вам нужно) или используйте тот же класс для анализа контрастности между текущими цветами переднего плана и фона (если вам нужно знать, системные цвета отличаются высокой контрастностью). Вы также можете проверить название системной темы, но это довольно ненадежный метод.

Другие вопросы по тегам