gpt4 book ai didi

linux下java swing透明度问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:18 30 4
gpt4 key购买 nike

我很难让 swing 组件透明度在 Ubuntu 14.04 下正常工作。例如,如果我使用 SwingJD library ,有光泽的按钮在 Windows 和 OSX 下正确呈现,但有些(不是全部 - 我已经检查了源并且无法弄清楚正确呈现的按钮和未能正确呈现的按钮之间的区别)不正确呈现在 Ubuntu 14.04 下。我也尝试过使 JToolBar 等组件半透明,但无济于事。我知道 Swing 和 Linux 在透明度方面存在问题,并且我已经尝试了给定的解决方案 here , 和 here , here , 和 here没有运气。有没有人找到解决这个问题的方法?我不愿意只为 Linux 用户创建一个在美学上不太有趣的 UI。

here's a direct link如果您想为自己重新创建问题,请添加到 SwingJD 源 jar。它带有一个测试类,该类具有一个主要方法,该方法将呈现三个按钮,其中两个在 Ubuntu 下无法正确呈现。

编辑>> SwingJD 的构造函数

“STANDARD_ORANGE_THEME”有效,而“STANDARD_LIGHT_ORANGE_THEME”无效

    case Theme.STANDARD_ORANGE_THEME:
buttonColor = new GradientPaint(0, 0, new Color(251, 139, 62), 0,
height, new Color(255, 102, 0));
button.setForeground(Color.WHITE);
break;
case Theme.STANDARD_LIGHTORANGE_THEME:
buttonColor = new GradientPaint(0, 0, new Color(247, 174, 24), 0,
height, new Color(255, 133, 0));
button.setForeground(Color.WHITE);
break;

screenshot displaying behaviour as well as output Kevin wanted to see

最佳答案

并非每个平台都支持透明度。我一直在使用根本不支持透明窗口或组件的 Linux 系统。对于无法访问图形硬件的虚拟桌面尤其如此。

您可以试试 isWindowTranslucencySupported()函数来亲自查看您的系统是否支持透明度。

来自 the tutorial on transparency :

import static java.awt.GraphicsDevice.WindowTranslucency.*;

// Determine what the default GraphicsDevice can support.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();

boolean isUniformTranslucencySupported =
gd.isWindowTranslucencySupported(TRANSLUCENT);
boolean isPerPixelTranslucencySupported =
gd.isWindowTranslucencySupported(PERPIXEL_TRANSLUCENT);
boolean isShapedWindowSupported =
gd.isWindowTranslucencySupported(PERPIXEL_TRANSPARENT);

关于linux下java swing透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917253/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com