j2me中图片滚动条主要是根据窗口的高度来决定滚动条的高度,既对滚动条图片进行拉升或者缩短。图片分为头部,中间,尾部,进行拉升的是中间部分,这样保证图片拉升后不失真。最近做j2me浏览器一块,写了一个画滚动条的方法: /************************************************************** *function:实现图片滚动条:添加图片拉伸功能,把图片分成头部,中部,底部三部分, * 拉伸时,只对中部拉伸,然后把头部,拉伸后的中部,底部加起来; *@param srcImage:滚动条图片; *@param scrollWidth:滚动条宽度; *@param scrollHeight:滚动条高度; *@param g :画笔; *@param scrollTop:滚动条起始的位置; *return value:void *date:2009-12-15 *author:weimaolin *************************************************************/ public static void paintScollBar(Image srcImage, int scrollWidth, int scrollHeight,Graphics g,int scrollTop) { if(srcImage == null) { return; } int imageHeight = srcImage.getHeight(); if(scrollHeight < 6) { scrollHeight = 6; } // 对图片主体部分宽度为:22减去头部3,再减去底部3,得16; int imageBody = imageHeight - 6; // 对画的次数计算, int midImageHeight = scrollHeight - 6; int count = (midImageHeight % imageBody == 0)?(midImageHeight / imageBody):(midImageHeight / imageBody + 1); //上圆角 g.setClip(0,scrollTop, scrollWidth, 3); g.drawImage(srcImage, 1, scrollTop, Graphics.LEFT|Graphics.TOP); //下圆角 g.setClip(0, scrollTop+scrollHeight-3, scrollWidth, 3); g.drawImage(srcImage, 1, scrollTop+scrollHeight, Graphics.LEFT|Graphics.BOTTOM); //中间拼合段 for (int i = 0; i < count; i++) { g.setClip(0, scrollTop+3+i*imageBody, scrollWidth, (midImageHeight-i*imageBody)<imageBody?(midImageHeight-i*imageBody):imageBody); g.drawImage(srcImage, 1, scrollTop+i*imageBody, Graphics.LEFT|Graphics.TOP); } }