首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:带有非透明组件的透明窗口?

Java:带有非透明组件的透明窗口?
EN

Stack Overflow用户
提问于 2010-07-30 21:42:30
回答 2查看 3.4K关注 0票数 4

我刚刚遇到了一些实用程序(com.sun.awt.AWTUtilities),它们可以让您的JFrame 真正实现透明。文档here。这个很好用。即使在Linux中,桌面特效也是打开不稳定的窗口。但是我也想在透明的JFrame上做一个不透明的组件。

有没有人知道,如果这是可能的,如何实现?

下面是我使用的代码:

代码语言:javascript
复制
import com.sun.awt.AWTUtilities;

/* "this" is the JFrame */
this.setUndecorated(true);
AWTUtilities.setWindowOpaque(this, true);
AWTUtilities.setWindowOpacity(this, 0.5f);
AWTUtilities.setWindowShape(this, new RoundRectangle2D.Float(0f, 0f, (float) getWidth(), (float) getHeight(), 15f, 15f));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-31 01:00:25

IIUC,适用于整个java.awt.Window和内容,但您可以尝试下面所示的方法和此example中的方法。

代码语言:javascript
复制
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBackground(new Color(0f, 0f, 0f, 0.1f));
f.setUndecorated(true);
f.add(new JLabel("<html>Testing<br>1, 2, 3</html>"));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
票数 4
EN

Stack Overflow用户

发布于 2010-08-11 13:19:45

你想要做的是setWindowOpaquefalse,并绘制低alpha的背景(如果你想要完全透明,则绘制0 alpha )。组件仍将绘制为不透明。请参见this article和查看每像素半透明度。

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

https://stackoverflow.com/questions/3372016

复制
相关文章

相似问题

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