什么是 getDesktopProperty() for Linux?

2022-09-03 03:03:30

我必须阅读本机操作系统的高对比度模式,并且必须在我的产品上应用设置。现在对于Windows,我做了一些类似这样的事情:

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

这适用于Windows,但我需要桌面属性来读取linux高对比度设置。任何人都可以告诉我Linux的桌面属性是什么?


答案 1

我认为无论你是否使用Java,都没有好的方法来检查Linux中的高对比度模式(X11本身没有高对比度功能,Linux有各种各样的UI框架,每个框架都可以以自己的方式实现高对比度)。

严格来说,在Windows中你也会遇到很多问题(请参阅此处此处)。

有两种可能的选项可以解决这种情况:只需使用 SystemColor 类在 UI 中使用系统颜色(如果这正是您需要的),或者使用相同的类来分析当前前景色和背景色之间的对比度(如果您需要知道系统颜色是否具有高对比度)。您也可以检查系统主题名称,但这是非常不可靠的方法。


答案 2

推荐