2009-06-30 3 views
2

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

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

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

ответ

4

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

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

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

+0

Несомненно, это свойство начинается с «победы». означает, что вам не нужно проверять платформу ..? Каковы шансы, что другая платформа будет иметь этот набор свойств? – Trejkaz

+0

Требуется проверка, потому что highContrast будет null на других платформах, так как флаг отсутствует. Windows будет иметь либо Boolean.TRUE, либо Boolean.FALSE. – Keilly

2

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

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

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

+0

Googling для SPI_GETHIGHCONTRAST заставил меня найти мой ответ, поэтому спасибо. – banjollity

Смежные вопросы