现在的位置: 首页 > 综合 > 正文

为Swing Popup窗口添加阴影

2018年05月19日 ⁄ 综合 ⁄ 共 704字 ⁄ 字号 评论关闭

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

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

 

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

 

抱歉!评论已关闭.