首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux上支持JFrame透明

如何在Linux上支持JFrame透明
EN

Stack Overflow用户
提问于 2018-07-03 02:41:15
回答 1查看 2.3K关注 0票数 1

我正在制作一个java swing应用程序,它在linux上执行,并通过X11转发显示在用户的计算机上。

我想在JFrame上应用圆角,所以我将其背景更改为新颜色(0,0,0,0,0)。

这个框架现在隐藏在我的电脑上(Windows 10)。但是linux(centOS7)似乎不支持窗口框架透明。

它在下面返回错误。

代码语言:javascript
复制
    Exception in thread "AWT-EventQueue-0" 
    java.lang.UnsupportedOperationException: PERPIXEL_TRANSLUCENT translucency is not supported
    at java.awt.Window.setBackground(Window.java:3844)
    at java.awt.Frame.setBackground(Frame.java:988)

在不改变背景的情况下,在这两种情况下都能很好地工作,但默认背景也会显示出来。

有没有办法做圆角??

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 09:29:57

并不是所有的平台都支持透明度。

看看windows.html

确定平台能力的章节

代码语言:javascript
复制
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);

测试,但我不认为X11转发允许透明!

编辑刚刚做了一个测试,通过ssh -X,JavaVersion1.8.0_162-B12,它可以工作。你的java版本是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51145931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档