2011-07-25 9 views
17

Tengo que leer el modo de alto contraste del sistema operativo nativo y tengo que aplicar las configuraciones en mi producto. Ahora para las ventanas que he hecho algo como esto:¿Cuál sería getDesktopProperty() para Linux?

try { 
     Toolkit toolkit = Toolkit.getDefaultToolkit(); 
     boolean highContrast = (Boolean)toolkit.getDesktopProperty("win.highContrast.on"); 
}catch(Exception e) { 
} 

Esto funciona bien para Windows pero necesito la propiedad de escritorio para leer la configuración de Linux de alto contraste. ¿Alguien puede decirme cuál sería la propiedad de escritorio para Linux?

+11

No he podido encontrar una propiedad de alto contraste definida en la documentación en línea en http://www.freedesktop.org/wiki/Specifications/XSettingsRegistry pero podría obtener el tema de escritorio a través de getDesktopProperty ("gnome.Net/ThemeName ") y verifica si el valor contiene" alto contraste "en él. – Joshua

+0

Mira una pregunta similar http://stackoverflow.com/q/1062711/891391 – yatul

Respuesta

1

Creo que no hay un buen método para verificar el modo de alto contraste en Linux cuando usas Java o no (X11 no tiene características de alto contraste y Linux tiene una gran variedad de marcos de interfaz de usuario y cada uno de ellos puede implementar un alto contraste en su propio modo).

Estrictamente hablando, usted también tendrá un montón de problemas con esto en Windows (vea here, o here).

Hay dos opciones posibles para resolver el caso: simplemente use colores del sistema en su UI usando la clase SystemColor (si eso es justo lo que necesita) o use la misma clase para analizar un contraste entre los colores de primer plano y fondo actuales (si necesita saber si los colores del sistema son de alto contraste). También puede verificar el nombre del tema del sistema, pero es un método bastante poco confiable.

Cuestiones relacionadas