`
viproc
  • 浏览: 44420 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

swing 窗体透明和窗体透明窗体里的空间不透明

阅读更多

说到桌面应用,大家肯定都希望自己做的界面能炫一点,酷一点。不知什么时候起,桌面UI的设计硬是刮起了透明效果的风暴,好像谁的窗体不透明就不够IN。ADOBE PHOTOSHOP CS3和CS2相比,工具栏就变成了半透明毛玻璃效果。VISTA更是不能不说,窗体的边框都是玻璃效果的。WIN 7 也沿袭了VISTA的这种界面效果。

用Swing怎么做出半透明的窗体效果呢?<Swing Hacks>这本书里介绍的是用截屏的方式伪造的透明效果。因为这本书写的时候jdk1.6 update 10还没出来。现在我们可以是用sun的API来做个透明效果的窗体。也就几行代码。

f.setUndecorated(true);// 不绘制窗体的边框和标题栏。(Optional)

com.sun.awt.AWTUtilities.setWindowOpacity(f, 0.5F);// 设置整个窗体的不透明度为0.5

这样出现的窗体就是半透明的,包括窗体上的子组件也是半透明的。

不过,若是只想让窗体半透明,而窗体上的组件还是正常的怎么办呢?可以这样:

f.setUndecorated(true); // 不绘制窗体的边框和标题栏。(Mandatory,否则下面一行代码会抛异常)

com.sun.awt.AWTUtilities.setWindowOpaque(f,false);

这样完全就没有了窗体背景了。用一张半透明的png图片作为背景。这种方法还可以用来做一个自定义形状的窗体。(需要写一个ImagePanel类,并覆盖paintComponent()方法)。

注意:没有了窗体的边框和标题栏,就不能对窗体进行默认的拖动、resize、关闭、最大化了。需要自己补充这些功能。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics