Pregunta sobre java, swing, accessibility, high-contrast – ¿Cómo detecto si una pantalla está en modo de alto contraste?

2

Estoy probando la aplicación Swing establecida de mi empresa para problemas de accesibilidad. Con el modo de alto contraste habilitado en mi PC, ciertas partes de esta aplicación se representan correctamente (blanco sobre negro) y algunas incorrectamente (negro sobre blanco).

Los bits que son correctos son los componentes nativos (JButton, JLabel y otros) y componentes de terceros de los gustos de JIDE. Los bits incorrectos son componentes personalizados y procesadores desarrollados internamente sin tener en cuenta el modo de alto contraste.

Claramente, es posible detectar cuando el modo de alto contraste está habilitado. ¿Cómo hago esto?

Tu respuesta

3   la respuesta
2

http://www.section508.gov/IRSCourse/mod02/printJava.html

"El software de Windows puede verificar la configuración de alto contraste llamando a la función SystemParametersInfo con el valor SPI_GETHIGHCONTRAST. Las aplicaciones deben consultar y admitir este valor durante la inicialización y al procesar mensajes WM_COLORCHANGE".

Esto es para acceder a través de la API de Win32:http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx (No estoy seguro de cómo, sin embargo, no es realmente bueno en ese campo, espero que alguien pueda completar)

Buscar en Google para SPI_GETHIGHCONTRAST me llevó a encontrar mi respuesta, así que gracias. banjollity
4

ara este propósito.

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

Esto solo funciona en Windows (de ahí lawin. prefijo). En linux y machighContrast será nulo Primero será más seguro realizar una comprobación de la plataforma o realizar una comprobación de nulos enhighContrast.

Seguramente el hecho de que esta propiedad comience con "ganar". significa que no tienes que hacer una comprobación de plataforma ..? ¿Cuáles son las probabilidades de que otra plataforma tenga esta propiedad establecida? Trejkaz
Se requiere una comprobación porque highContrast será nulo en otras plataformas ya que la bandera no está presente. Windows tendrá Boolean.TRUE o Boolean.FALSE. Keilly
0

Has probado

Toolkit.getDefaultToolkit().getColorModel()

Preguntas relacionadas