为Swing Popup窗口添加阴影

 本文继续前面关于弹出窗口的话题。弹出窗口常见另一个效果是阴影。这种阴影不是单纯的黑色矩形,而是带有背景具有渐变灰度级别的阴影。在Windows上启动这一特性的地方在桌面属性->外观->效果窗口中:

设置启动这一效果后,所有Windows中的菜单都具有阴影效果,如下图所示:

 

      很可惜的是Java6并没有检测并启动这一效果。但是我们可以根据前面文章的方法自定义这种ShadowPopupFactory,这能不仅仅使菜单具有阴影效果,其他弹出式窗口如ToolTip和下拉框也都有这种效果。
      这种ShadowPopupFactory的基本思想是为要弹出的内容加上阴影边框,由它实现阴影效果的渲染。为实现文章开始所说的背景灰度渐变阴影效果,同前一篇文章的透明Popup窗口一样,要使用java.awt.Robot抓取组件的背景屏幕,并切割右边、下边以及右下边角图像,并进行灰度处理。最后将这三处图像作为边框内容画出,就实现了阴影效果。接着ShadowPopupFactory的getPopup方法中,将要弹出的组件放在边框是阴影边框的容器内,最后以此容器替代目标组件作为弹出内容获取Popup对象返回。
      下面是使用ShadowPopupFactory所写的演示程序的抓图:
 
      如果结合前面两篇文章的两种动画效果,就可实现滚动式弹出的阴影窗口和淡入淡出式弹出的阴影窗口。实现方法比较简单,仅需要将ScrollablePopupFactory和TranslucentPopupFactory的父类换成ShadowPopupFactory并适当调整一下构造函数就可以了。
      本文演示源码可从这儿 下载
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值