下面这个问题只是看到网上,有好多人谈论,但是并没有人去做。我真想将它的效果实现出来,可是自己的力量太小了,请各位java爱好者帮帮忙,解决一下,好让众多的初学者都能感到java也是有趣味的。俗话说重要人物都最后出场,作为Swing篇的完结部分,我为大家隆重推荐一个GlassPane的实现—InfiniteProgressPanel。 这是在程序进行更新的时候能够给用户以提示,可以屏蔽用户操作而且十分美观的特殊进度条。它源于一个超级Java大牛的手笔,此君的《Swing Hacker》在去年如带给我的震撼到现在还挥之不去。从那以后,谁再敢说Java不能做出好看的用户界面之前都需要自己好好掂量一下自己是否有这么说的资格。这本书让我真正认识到,只有想不到没有做不到。都是一样用Swing,为啥人家就能玩出花样呢?差距! 其实现原理很简单,说白了就是用Java2D画圈!至于源码各位可以到网上自己搜。他的使用十分简单:InfiniteProgressPanel glassPane = new InfiniteProgressPanel();frame.setGlassPane(glassPane) 在需要它显示的时候,就这样做:Thread myThread = new Thread(new Runnable(){public void run() {InfiniteProgressPanel gl = thisRef.glassPane;gl.start();gl.setText("正在保存数据请稍候....");try {//这里放要做的事情……gl.setText("保存完毕,欢迎使用!");Thread.sleep(1000);}catch(InterruptedException ex) {}finally{gl.stop();}}});myThread.start(); 这里有几个问题需要注意: 1. 必须要将InfiniteProgressPanel的显示放到一个线程里,相信大家都知道原因,我不用多说。 2. 在InfiniteProgressPanel结束之前的Thread.sleep(1000);是必要的,如果时间设得太短或不设将会导致InfiniteProgressPanel死掉。至于原因我没有时间深究,各位有兴趣可以自行察看其源码,如果你能找到原因高诉我,我会非常感激。 3. 在有些时候会出现圆圈“四处乱窜”的现象,不过不太常见。