最近想模仿酷狗做个练习,路上困难重重啊。第一个困难是需要那些图标,于是就自学PS。再就是需要渐变色的进度条,于是就费了好大的功夫,重写了BasicProgressBarUI的paintDeterminate这个方法,好不容易实现了它。详情请看我的博客“实现渐变色的JProgressBar”.现在又遇到一个问题,就是需要半透明的JPanel。下面我将详细介绍解决这个问题中我遇到的弯路:
第一个是,请注意,我这个实现的是父容器内的JPanel半透明,这个JPanel并不是占满父容器的。其实将其中的参数调大,就能实现占满父容器的效果。而且,实现占满父容器的半透明的JPanel有很多个方法,我刚开始就是借鉴的那些方法,但是一直没有实现成功。
第一个是,使用graphics2D的fillxxx方法时,不要使用getBounds()方法的返回值做参数。因为graphics2D上下文已经指定了其x,y坐标,所以再使用getBounds()的返回值做参数,就会加倍这个x,y坐标。正确的用法是
graphics2d.fillRect(0, 0, getWidth(), getHeight());
第三个是,大多数component默认是不透明的。要使他们透明,必须自己设置。
下面先贴出来效果图,因为还没学会PS,所以其中需要图标的地方,我全部都是从酷狗界面上直接截了下来,等学会了,在自己做好放上: