我必须阅读本机操作系统的高对比度模式,并且必须在我的产品上应用设置。现在对于Windows我做了这样的事情:
try {
Toolkit toolkit = Toolkit.getDefaultToolkit();
boolean highContrast = (Boolean)toolkit.getDesktopProperty("win.highContrast.on" );
}catch(Exception e) {
}
这适用于Windows但我需要桌面属性才能读取linux高对比度设置。任何人都可以告诉我linux的桌面属性是什么?
答案 0 :(得分:1)
我认为,无论何时使用Java,都没有好的方法可以检查Linux中的高对比度模式(X11本身没有高对比度功能,Linux有各种各样的UI框架,每个框架都可以实现高对比度这是自己的方式)。
严格来说,您在Windows中也会遇到一些问题(请参阅here或here)。
有两种可能的选择来解决这种情况:只需使用SystemColor类在您的UI中使用系统颜色(如果这正是您需要的)或使用相同的类来分析当前前景色和背景色之间的对比(如果您需要知道系统颜色是否为高对比度)。您还可以检查系统主题名称,但这是非常不可靠的方法。