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