如何检测如果显示在高对比度模式?(How do I detect if a display is i

2019-06-25 08:34发布

我测试的可访问性问题,我公司制定的Swing应用程序。 有了这个应用程序的我的电脑某些部分启用高对比度模式可以正确地呈现(白对黑)和一些不正确的(黑色白底)。

这是正确的位是本地组件(一个JButton,JLabel的和诸如此类的东西)和基德的同类第三方组件。 不正确的位是内部开发的,而不考虑高对比度模式自定义组件和渲染器。

显然,这是可能的,当启用高对比度模式来检测。 我该怎么做呢?

Answer 1:

原来用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将为空。 这将是最安全的做一个平台首先检查,或在nullcheck highContrast



Answer 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 (不完全知道如何,不过,不是真正在这一领域良好,希望有人可以完成)



Answer 3:

你试过了吗

Toolkit.getDefaultToolkit().getColorModel()


文章来源: How do I detect if a display is in High Contrast mode?