能否制作一个背景透明的窗口?

4

我在想是否可以使用SWT创建一个具有透明背景或无背景的窗口(即只显示浮动的按钮和文本)。

我尝试使用setBackground()函数,例如:

shell.setBackground(display.getSystemColor(SWT.TRANSPARENT));

但它只会显示一个黑色背景的窗口,而不是透明的窗口。有什么办法可以做到这一点吗?

如果Swing可以让我实现上述功能,那么我不介意使用Swing。我之所以使用SWT(抱歉,我的原始问题中有误)是因为它使用本地窗口方案,而不是丑陋/自定义的方案。 - kennypu
1个回答

5
请查看如何创建透明和形状的窗口(Java 7+)。

Translucent window with button

..(SWT)使用本地窗口方案,而不是丑陋/自定义的方案。

请使用本机PLAF与Swing。


更新1

我。

..你想要组件(按钮等),而不是Window(或祖先)的透明度?

你回答到。

不一定是组件本身,而是组件所在的“区域”。如果您查看上面的嵌套布局示例,您会看到win 7的透明边框,然后您会看到普通的灰色背景。我希望那个灰色背景也是透明的。

Window with 'per pixel' translucency

您可以创建具有每像素透明度的窗口,其中每个像素都有自己的alpha值。使用此功能,您可以例如创建一个渐变到alpha值为零的窗口。

另外,第三个截图实际上是从我的回复的第一句话链接的页面中直接取出的第二个图像(同一页,在那里我得到了上面的引用)。你有没有点击链接,阅读页面(查看截图),尝试工作示例?

谢谢您的回复。关于主题,您看到窗口选项卡(标题、最小化、最大化、关闭)也是透明的吗?我只想让背景(按钮所在区域)透明,而保留边缘不变。 - kennypu
如果您查看上面的嵌套布局示例,您会看到Win 7的透明边框,然后您会看到普通的灰色背景。我希望那个灰色背景也是透明的。 - kennypu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接