Как определить, находится ли дисплей в режиме высокой контрастности?

Я тестирую приложение Swing моей компании на предмет доступности. С включенным режимом высокой контрастности на моем компьютере некоторые части этого приложения отображаются правильно (белый на черном), а некоторые неправильно (черный на белом).

Правильными являются битовые компоненты (JButton, JLabel и еще много чего) и сторонние компоненты, подобные JIDE. Неправильные биты - это пользовательские компоненты и средства визуализации, разработанные собственными силами без учета режима высокой контрастности.

Очевидно, что можно определить, когда включен режим высокой контрастности. Как мне это сделать?

3 ответа

Решение

Оказывается, для этой цели в Java 1.4.1 было добавлено свойство win.highContrast.on.

public static void main(String[] args) {
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Boolean highContrast = (Boolean)toolkit.getDesktopProperty( "win.highContrast.on" );
}

Это работает только на Windows (следовательно, win. префикс). На Linux и Mac highContrast будет нулевым Сначала будет безопаснее выполнить проверку платформы или проверку на нуль highContrast,

Выдержка из этой ссылки: http://www.section508.gov/IRSCourse/mod02/printJava.html

"Программное обеспечение Windows может проверить настройку высокой контрастности, вызвав функцию SystemParametersInfo со значением SPI_GETHIGHCONTRAST. Приложения должны запрашивать и поддерживать это значение во время инициализации и при обработке сообщений WM_COLORCHANGE".

Это для доступа через Win32 API: http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (Не совсем уверен, как, хотя, не очень хорошо в этой области, надеюсь, кто-то можно завершить)

Ты пробовал

Toolkit.getDefaultToolkit().getColorModel()
Другие вопросы по тегам