Что будет getDesktopProperty () для Linux? - PullRequest
17 голосов
/ 25 июля 2011

Мне нужно прочитать высококонтрастный режим родной операционной системы и применить настройки на моем продукте.Теперь для Windows я сделал что-то вроде этого:

 try {
       Toolkit toolkit = Toolkit.getDefaultToolkit();
       boolean highContrast = (Boolean)toolkit.getDesktopProperty("win.highContrast.on" );
 }catch(Exception e) {
 }

Это прекрасно работает для Windows, но мне нужно свойство desktop для чтения настроек высокой контрастности linux.Может кто-нибудь сказать мне, что будет свойство рабочего стола для Linux?

1 Ответ

2 голосов
/ 30 мая 2012

Я думаю, что нет хорошего способа проверять высококонтрастный режим в Linux, когда вы используете Java или нет (сам X11 не имеет высококонтрастной функции, а в Linux имеется множество разнообразных сред пользовательского интерфейса, и каждый из них может реализовывать высокий контраст в это по-своему).

Строго говоря, у вас будет много проблем с этим и в Windows (см. здесь или здесь ).

Существует два возможных варианта решения проблемы: просто используйте системные цвета в вашем пользовательском интерфейсе, используя класс SystemColor (если это именно то, что вам нужно) или используйте тот же класс для анализа контраста между текущим передним планом и цвета фона (если вам необходимо знать, являются ли системные цвета высококонтрастными). Вы также можете проверить имя системной темы, но это довольно ненадежный метод.

...