Вопрос по java, swing – Как определить, находится ли дисплей в режиме высокой контрастности?
Я проверяю приложение Swing, разработанное моей компанией, на предмет доступности. С включенным режимом высокой контрастности на моем компьютере некоторые части этого приложения отображаются правильно (белый на черном), а некоторые неправильно (черный на белом).
Правильными являются битовые компоненты (JButton, JLabel и еще много чего) и сторонние компоненты, подобные JIDE. Неправильные биты - это пользовательские компоненты и средства визуализации, разработанные собственными силами без учета режима высокой контрастности.
Очевидно, что можно определить, когда включен высококонтрастный режим. Как мне это сделать?
Выдержка из этой ссылки:http://www.section508.gov/IRSCourse/mod02/printJava.html
& quot; Программное обеспечение Windows может проверить настройку высокой контрастности, вызвав функцию SystemParametersInfo со значением SPI_GETHIGHCONTRAST. Приложения должны запрашивать и поддерживать это значение во время инициализации и при обработке сообщений WM_COLORCHANGE. & Quot;
Это для доступа через Win32 API:http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (Не совсем уверен, как, однако, не очень хорошо в этой области, надеюсь, кто-то может завершить)
Оказывается, для этой цели в 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 и MachighContrast
будет нулевым Сначала будет безопаснее выполнить проверку платформы или проверку на нульhighContrast
.