I'm testing my company's established Swing application for accessibility issues. With high contrast mode enabled on my PC certain parts of this application are rendered properly (white-on-black) and some incorrectly (black-on-white).
The bits that are correct are the native components (JButton, JLabel and whatnot) and third party components from the likes of JIDE. The incorrect bits are custom components and renderers developed in-house without consideration for high-contrast mode.
Clearly it's possible to detect when high-contrast mode is enabled. How do I do this?
Did you try
Extract from this link : http://www.section508.gov/IRSCourse/mod02/printJava.html
"Windows software can check for the high contrast setting by calling the SystemParametersInfo function with the SPI_GETHIGHCONTRAST value. Applications should query and support this value during initialization and when processing WM_COLORCHANGE messages."
This is to access via the Win32 API : http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (Not fully sure how, though, not really good in that field, hope someone can complete)
Turns out the win.highContrast.on property was added in Java 1.4.1 for this purpose.
This only works on Windows (hence the
win.
prefix). On linux and MachighContrast
will be null. It'll be safest to do a platform check first, or a nullcheck onhighContrast
.