我正在测试公司已建立的Swing应用程序的可访问性问题。在我的PC上启用了高对比度模式后,此应用程序的某些部分将正确渲染(黑底白字),而某些部分将被错误渲染(黑底白字)。

正确的位是JIDE之类的本机组件(JButton,JLabel和whatnot)和第三方组件。不正确的位是自定义组件,是内部开发的渲染器,没有考虑高对比度模式。

显然,可以检测到何时启用了高对比度模式。我该怎么做呢?

最佳答案

事实证明,为此在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进行nullcheck。

07-27 15:07