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

2

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

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

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

Ваш Ответ

3   ответа
2

Выдержка из этой ссылки: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 (Не совсем уверен, как, однако, не очень хорошо в этой области, надеюсь, кто-то может завершить)

Error: User Rate Limit Exceeded banjollity
0

Ты пробовал

Toolkit.getDefaultToolkit().getColorModel()
4

Оказывается, для этой цели в 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.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы