如何设置JDialog的透明背景

发布于 2024-10-10 14:44:59 字数 163 浏览 7 评论 0原文

嘿,..

我如何设置背景透明并“删除”关闭操作(标记为红色)? 我只想出示卡片:-)

alt text

谢谢..!

Hy,..


how can i set the background transparent and "remove" the closeoperation (marked red) ?
I only want to show the card :-)

alt text

Thanks..!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

枕花眠 2024-10-17 14:44:59

虽然 UNDECORATED JFrame 透明度没有问题(myJFrame.setBackground (new Color (0,0,0,0)); 已经足够漂亮了),但与 JDialog 一样不起作用。

然而,我发现以下序列对于 JDialog 来说是完美的:

myJDialog.getRootPane ().setOpaque (false);
myJDialog.getContentPane ().setBackground (new Color (0, 0, 0, 0));
myJDialog.setBackground (new Color (0, 0, 0, 0));

A 也保留,但这是我私人的、谦虚的建议,所有对 Window 扩展器(例如 JFrame、JDialog)的 setBackground 调用都应该针对 UnsupportedOperationException 和 IllegalComponentStateException 进行尝试。

Although there is no problem with UNDECORATED JFrame transparency (myJFrame.setBackground (new Color (0,0,0,0)); is pretty enough), the same with JDialog is not working.

I discovered, however, the following sequence works perfect for JDialog:

myJDialog.getRootPane ().setOpaque (false);
myJDialog.getContentPane ().setBackground (new Color (0, 0, 0, 0));
myJDialog.setBackground (new Color (0, 0, 0, 0));

A also remain, but it is my PRIVATE, humble suggestion, that all setBackground call for Window extenders (e.g. JFrame, JDialog) should be tried against UnsupportedOperationException and IllegalComponentStateException.

追我者格杀勿论 2024-10-17 14:44:59

yourDialog.setUndecorated(true) 应该可以解决标题栏的问题。

用于使框架透明。您必须在根面板上使用 yourDialog.getRootPane().setOpaque(false) 进行操作。

yourDialog.setUndecorated(true)should do the trick for the title bar.

For having the Frame transparent. You'll have to work on the root panel with yourDialog.getRootPane().setOpaque(false)on it.

你怎么敢 2024-10-17 14:44:59

我按照文章中的说明进行操作,最终成功了,而且一点也不困难。 :)
我现在有了半透明的 SplashImage 和 About 屏幕,它显示 PNG 图像并尊重其(复杂的)透明度。太棒了。
请注意,在 JDK 7 中,继续操作的方法会略有变化。

只需注意关键字之间的差异即可。
http://download.oracle.com/javase/tutorial/uiswing /misc/trans_shape_windows.html#6u10

如果这个技巧能奏效那就太好了

yourDialog.setUndecorated(true);
yourDialog.getRootPane().setOpaque(false);

,但对我来说却没有。也许我做错了什么。

我还注意到使用 setContentPane(Component); 很重要而不是 getContentPane.add(Component);

我很高兴它现在可以工作了! :)

I followed the instructions from the article and it worked finnaly AND it wasn't difficult at all. :)
I now have my translucent SplashImage ans About screen which displays a PNG image and respect its (complex) transparency. Just awesome.
Note that the method to proceed will change a little bit in JDK 7.

Just notice the difference between keywords.
http://download.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#6u10

It would have been nice if the

yourDialog.setUndecorated(true);
yourDialog.getRootPane().setOpaque(false);

trick worked but it didn't to me. Maybe I did something wrong.

I also note it is important to use setContentPane(Component); instead of getContentPane.add(Component);

I'm happy it works now ! :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文