我正在测试我公司已建立的Swing应用程序的可访问性问题。在我的PC上启用高对比度模式时,此应用程序的某些部分会正确呈现(黑底白字),而另一些则不正确(白底黑字)。
正确的位是本机组件(JButton,JLabel和诸如此类)以及来自JIDE之类的第三方组件。不正确的位是自定义组件和内部开发的渲染器,不考虑高对比度模式。
显然,可以检测何时启用高对比度模式。我该怎么做?
答案 0 :(得分: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和Mac上highContrast
将为null。首先进行平台检查或highContrast
上的空检查是最安全的。
答案 1 :(得分:2)
从此链接中摘录:http://www.section508.gov/IRSCourse/mod02/printJava.html
“Windows软件可以通过使用SPI_GETHIGHCONTRAST值调用SystemParametersInfo函数来检查高对比度设置。应用程序应在初始化期间和处理WM_COLORCHANGE消息时查询并支持此值。”
这是通过Win32 API进行访问:http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx(不完全确定在该领域的表现如何,希望有人可以完成)
答案 2 :(得分:0)
你试过吗
Toolkit.getDefaultToolkit().getColorModel()