由于本人十分热爱Java
Swing,所以平时闲暇之余总是喜欢极尽所能去搜藏一些自认为比较“酷”的Swing代码来研究揣摩。昨天的两篇文章,介绍了Java
Swing透明和不规则窗体的创建和原理,是一年半以前我还在学校的时候搞出来的。在学校的日子因为轻松、自由、专注,所以总是让人倍加怀念。这一怀念不打紧,让我翻出了以前写的N多“烂”代码,好在时至今日我还能勉强看懂,花了一个上午的时间整理了一下,现在跟大家分享一个分别模仿NetBeans和MyEclipse启动画面的Java
Swing闪屏制作技巧。
用过NetBeans和MyEclipse的童鞋,对它们的启动画面(也叫闪屏,下文所述如不加以说明,都是指闪屏)肯定都非常熟悉了,它们在启动的时候,向启动画面输出当前初始化的进度信息:包括文字信息和进度条信息。当然他们也有细微的不同之处,仔细观察就能发现,NetBeans的进度条似乎太不“专业”,随便在闪屏上画个矩形,然后对部分区域以红色填充以代表进度;相反,MyEclipse则要好多了,“闪屏”上出现的是一个标准的进度条控件。二者优劣无法评断,也不是本文的主题所在,这里本人将以两篇文章的篇幅分别介绍如何实现NetBeans式的闪屏和MyEclipse式的闪屏。
本文将从原理到代码,详细介绍如何实现NetBeans的闪屏。
原理:Swing程序启动后,虚拟机会根据指定的图片生成一个SplashScreen,在Swing窗体显示之前出现在屏幕的中央,以告知用户,程序已经在很努力的加载了。在程序中,我们可以通过SplashScreen.getSplashScreen()得到这个闪屏对象,然后,通过该对象我们又可以得到闪屏的图形对象(Graphics2D对象)。得到这个对象以后,相信接下来不用多说,很多人都知道该如何借助这个Graphics2D对象,在闪屏上画出来各种各样的“东西”而不仅仅限于提示字符和模拟的进度条了。
看一下效果图
最上面的那一行字符串,是加载进度提示信息,最下面的红色区域是模拟出来的进度条。当然啦,他们的位置、形状、颜色都是可以定制的。
好了,贴上代码吧: