J2ME UI之窗口部件选择条
  vvb6bOG0D5hl 2023年11月02日 35 0


List列表的选择条.

package org.wuhua.ui; 

import javax.microedition.lcdui.Graphics; 

/** 

 * <b>类名:Select.java</b> </br> 

 * 编写日期: 2006-8-15 <br/> 

 * 程序功能描述:选择条的抽象类.具体子类将实现,可渐变的效果<br/> 

 * Demo: <br/> 

 * Bug: <br/> 

 * 

 * 程序变更日期 :<br/> 

 * 变更作者 :<br/> 

 * 变更说明 :<br/> 

 * 

 * @author wuhua 

 */ 

public abstract class Select { 

 /* 

 * 默认选择框是没边框的 

 */ 

 protected boolean isBorder = false; 

 /* 

 */ 

 protected int selectColor = 0x676767; 



 /** 

 * 绘制边框 

 * 

 * @param x 起始水平线x 

 * @param y 起始垂直线y 

 * @param width 边框的宽度 

 * @param height 边框的高度 

 * @param g 绘制此边框的图形 

 */ 

 public abstract void paint( int x, int y, int width, int height, Graphics g ); 

} 


package org.wuhua.ui.select; 

import javax.microedition.lcdui.Graphics; 

import org.wuhua.ui.Border; 

import org.wuhua.ui.Select; 

import org.wuhua.ui.border.RoundRectBorder; 

/** 

 * <b>类名:Shade.java</b> </br> 

 * 编写日期: 2006-8-15 <br/> 

 * 程序功能描述:带有渐变效果的选择框,这些选择框将用在List跟其他的窗口部件上.<br/> 

 * 以后我们设计的时候,就可以重用这个部件,而不毕业自己写啊写.好麻烦的 

 * Demo: <br/> 

 * Bug: <br/> 

 * 

 * 程序变更日期 :<br/> 

 * 变更作者 :<br/> 

 * 变更说明 :<br/> 

 * 

 * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a> 

 */ 

public class ShadeSelect extends Select { 


 private Border border; 


 public ShadeSelect(int _selectColor, boolean _isBorder){ 

 //默认的边框 

 this(_selectColor,_isBorder,_isBorder?Border.getRectBorder():null); 

 } 


 public ShadeSelect(int _selectColor, boolean _isBorder,Border _border){ 

 if(_isBorder && _border == null) 

 throw new IllegalArgumentException("BoderWidth isn't less than 0 "); 

 selectColor = _selectColor; 

 isBorder = _isBorder; 

 border = _border; 

 } 

 public void paint(int x, int y, int width, int height, Graphics g) { 

 // init(width); 

 if(isBorder){ 

 paintBorder(x,y,width,height,g); 

 x = x + border.getBorderWidth(); 

 y = y + border.getBorderWidth(); 

 width = width - 2*border.getBorderWidth(); 

 height = height-2*border.getBorderWidth(); 


 //判断边框的类型,再具体画出选择框 

 if(border instanceof RoundRectBorder){ 

 paintShadeSelectRac(x,y,width,height,g); 

 }else{ 

 paintShadeSelect(x,y,width,height,g); 

 } 


 }else{ 

 paintShadeSelect(x,y,width,height,g); 

 } 

 } 

 private void paintBorder(int x, int y, int width, int height, Graphics g){ 

 border.paint(x,y,width,height,g); 

 } 


 /* 

 * 渐变的算法是,获取整个框架的高度,然后再描绘没个点,只是这个点的颜色变浅 

 */ 

 private void paintShadeSelect(int x, int y, int width, int height, Graphics g){ 

 //通过画线来画出颜色渐变的效果 

 for(int i = 0; i<= width; i++){ 

 g.setColor(selectColor + i/2); 

 g.drawLine(x + i,y,x + i,height+y); 

 } 

 } 


 /* 

 * 渐变的算法是,获取整个框架的高度,然后再描绘没个点,只是这个点的颜色变浅 

 */ 

 private void paintShadeSelectRac(int x, int y, int width, int height, Graphics g){ 


 //循环画出线条,可以看到渐变的效果,其中6表示圆弧大小,采用固定形式,这点是不是需要变通下.以后研究 

 for(int i = 1; i<= width/2; i++){ 

 g.setColor(selectColor + i/2); 

 g.drawRoundRect(x + i,y,width-i,height,6,6); 

 g.drawRoundRect(x +width- i,y, i,height,6,6); 

 } 

 g.setColor(selectColor); 

 g.drawRoundRect(x ,y,width/2,height,6,6); 

 g.drawRoundRect(width/2+x,y, width/2,height,6,6); 



 } 

}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月17日   52   0   0 数据库JavaSQL
vvb6bOG0D5hl