如何设置JDialog的透明背景

时间:2011-01-07 22:53:17

标签: java swing background transparency translucency

HY,..

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

alt text

谢谢..!

3 个答案:

答案 0 :(得分:14)

尽管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仍然存在,但是我的私有的,简单的建议是,应该针对UnsupportedOperationException和IllegalComponentStateException尝试所有对Window扩展器(例如JFrame,JDialog)的setBackground调用。

答案 1 :(得分:11)

yourDialog.setUndecorated(true)应该为标题栏提供技巧。

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

答案 2 :(得分:2)

我按照文章中的说明进行了操作,并且完成了工作并不困难。 :) 我现在有了半透明的SplashImage ans About屏幕,它显示PNG图像并尊重其(复杂)透明度。真棒。 请注意,要继续的方法将在JDK 7中稍微改变一下。

注意关键字之间的区别。 http://download.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#6u10

如果

那就好了
yourDialog.setUndecorated(true);
yourDialog.getRootPane().setOpaque(false);
伎俩有效,但它没有给我。也许我做错了什么。

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

我很高兴它现在有效! :)