`
wuhua
  • 浏览: 2111875 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

设计可组装的j2me UI(三) TextBox

阅读更多
     自己实现操作Canvas,很大部分是对文字的显示以及排版操作。而对字体的定义则每个厂商都有自己的规范,必然nokia定义了大,中,小字体。而我在其他手机上只有一种字体,所以无论你怎么样定义字体的大小都只有一种效果,这样的话。你可能要在程序中自己进行判断,然后在显示出来。要不然的话,则写出的程序在各个机型上显示的效果会有一些不同。
     下面让我们来设计可以滚动的TextBox.
     首先继承Part(UI的第一篇文章有给出代码)
    
public class TextBox extends Part {
     	/** 文本的行数 */
	private int numOfEls;
	
	/**
	 * 此页面最多显示得行数
	 */
	private int maxNum;
	
	private int pillarHeight;

	/** 开始索引 * */
	private int startIndex;
       /**
	 * 文本的内容
	 */
	private char [] textChars;
	
	/**
	 * 文本切割后得内容
	 */
	private String[] textNum;
	
	
	private String text;

        public void setString(String text) {
		
			 
		this.text = text;
	 	this.textChars = text.toCharArray();
	 	skipContent();
	 	//numOfEls = textChars.length;
	}
        /**
	 * 分割字符传.并处理pillar的高度,最主要的方法。
         * 通过屏幕的高,宽,以及字体的体型进行文本出来。并把处理后的文本保存在一个Vector中,以后绘制出来就容易多了
	 *
	 */
	private void skipContent(){
		
		this.numOfEls = FontUtil.siptRow(this.contentStyle.font,
				viewContent[WIDTH],text);
		
		int charWidth = viewContent[X]+ 2;
		int charHeight = viewContent[Y];
		int h;
		if(numOfEls>this.maxNum){
			h = (viewContent[WIDTH]-18);
		}else{
			h = (viewContent[WIDTH]-12);
		}
		StringBuffer sb = new StringBuffer();
		Vector ve = new Vector();
		for(int i=0 ; i < this.textChars.length; i++){
		   sb.append(textChars[i]);
			 
			charWidth = charWidth + contentStyle.font.charWidth(textChars[i]);
			
			
			if(charWidth>h){
				charHeight = charHeight + contentStyle.font.getHeight()  ;
				charWidth = viewContent[X] + 2;
				ve.addElement(sb.toString());
				log.debug(sb);
				sb = null;
				sb = new StringBuffer();
				
			} 
		}
		ve.addElement(sb.toString());	
		log.debug(sb);
		textNum = new String[ve.size()];
		ve.copyInto(this.textNum);
		ve.removeAllElements();
		ve = null;
	
		//获取最大的数组值
		maxNum = viewContent[HEIGHT]/(this.contentStyle.font.getHeight() ) ;
		this.numOfEls = this.textNum.length;
		this.pillarHeight = numOfEls > maxNum ? viewContent[HEIGHT]/(numOfEls-maxNum +1):0;
		
		log.debug("MaxNum=" + maxNum); 
		log.debug("numOfEls=" + numOfEls); 
		
		
	}

/**
	 * 绘制文本的内容,自动实现,状态条的显示等
	 * @param g
	 */
	private void paintContent(Graphics g) {
		this.contentStyle.setFontColor(g);
		 
		int charWidth = viewContent[X]+ 2;
		int charHeight = viewContent[Y];
		int size = maxNum > this.numOfEls? numOfEls:maxNum;
		log.debug(startIndex);
		for(int i=startIndex ; i < size + startIndex; i++){
			g.drawString(this.textNum[i],charWidth,charHeight,Graphics.TOP | Graphics.LEFT);
			charHeight = charHeight + contentStyle.font.getHeight() ;			
		}
		
		paintPillar(viewContent[WIDTH]-pillarWidth-4, viewContent[Y],g);
		
	}
	
	private void paintPillar(int x,int y,Graphics g){
		if (maxNum > this.numOfEls)
			return; 
		pillar.paint(x,y+(startIndex * pillarHeight),viewContent[WIDTH],this.pillarHeight,g);
	}




以上代码是基本框架。思路就这样。实践起来也不困难。
分享到:
评论

相关推荐

    J2me UI库类 基于低级界面

    基于低级界面的j2me UI库类,有demo和源码。高级界面的东西虽然好用但是在不同的手机上面显示得不一样,有的好看有的很丑,但是基于低级界面的就不一样了。在不同手机上显示出来都是一样的,这个UI库类是企业级的。...

    J2ME的TextBox用法

    在探讨J2ME中的`TextBox`用法时,我们不仅限于其基本功能,还将深入理解如何结合`Command`命令来实现用户交互,以及如何优雅地处理应用的生命周期事件。以下将详细介绍`TextBox`和`Command`在Java Micro Edition...

    J2ME高级UI总结

    J2ME的标准库中提供的UI组件相对有限,如`ChoiceGroup`、`TextBox`和`Form`等。然而,为了创建更复杂和美观的界面,开发者可以使用第三方库,如LWUIT( Lightweight User Interface Toolkit)或MIDPX。这些库提供了...

    MIE J2ME UI库 v1.0

    MIE J2ME UI库 v1.0 说明: MIE UI库(下简称MIE)是一个开源的手机(J2ME)GUI编程框架,与PC电脑上的AWT/Swing/SWT有相似的用处。 MIE提供了一套基本的UI组件,包括文本标签、文本框、文本域、按钮、单选框、复选框...

    LWUIT j2me UI例子

    **标签“LWUIT j2me UI例子 制作漂亮的UI例子”** 强调了LWUIT在J2ME平台上的应用以及创建美观界面的重要性。这些标签可能关联着一个项目或教程,旨在帮助开发者学习和掌握LWUIT的UI设计技巧。 在**压缩包子文件的...

    j2me ui lwuit 1.3

    Lightweight User Interface Toolkit (LWUIT) 是一个专门针对 J2ME 平台设计的 UI 框架,它允许开发者创建丰富的、响应迅速且具有吸引力的图形用户界面。 LWUIT 1.3 版本是该框架的一个重要里程碑,它提供了许多...

    eswt j2me ui 教程

    **eSWT (Embedded Standard Widget Toolkit) 是一个专为J2ME(Java 2 Micro Edition)平台设计的用户界面框架,旨在提供更丰富、更接近原生应用的UI体验。** **eSWT 的出现主要源于以下几个原因:** 1. **作为...

    lwuit.rar_J2ME ui_LWUIT_j2me

    总的来说,LWUIT是J2ME开发中不可或缺的工具,它极大地提高了UI开发的效率和质量。通过熟练掌握LWUIT,开发者能够为Java ME平台创建出具备高级UI特性的移动应用,吸引更多的用户,并提升应用的整体品质。而文档中的...

    nokia s60 FP1 J2ME UI develop guide

    通过上述内容可以看出,《诺基亚 S60 FP1 J2ME UI 开发指南》为开发者提供了全面而深入的技术指导,有助于他们更好地理解和掌握 S60 平台上 J2ME 应用程序 UI 设计的关键要素,进而开发出既符合技术规范又满足用户...

    J2ME高级UI编程源码

    **J2ME高级UI编程源码详解** J2ME(Java 2 Micro Edition)是Java平台...通过深入研究"Example02"源码,开发者不仅可以学习到J2ME UI设计的基本原理,还能掌握高级UI编程技巧,从而提升自身在移动设备应用开发的能力。

    j2me的UI控件包

    Mewt 是一个专为J2ME设计的UI控件库,它提供了一系列轻量级、可自定义皮肤的UI组件,适应于各种不同屏幕尺寸的设备。Mewt 的设计目标是为开发者提供更加灵活、高效的界面设计工具,以便在资源有限的移动设备上创建出...

    J2ME+UI框架LWUIT开发手册

    **J2ME+UI框架LWUIT开发手册** 在移动设备技术发展早期,Java 2 Micro Edition(J2ME)是开发嵌入式系统和...但LWUIT对于理解移动UI设计和交互仍有一定的参考价值,尤其是对于那些仍然需要维护J2ME应用的开发者来说。

    j2me ui开发包 lwuit.CHM文档

    lwuit开发文档,英文的,勉强看得下去,chem格式很受欢迎

    j2me最佳实践,UI设计

    ### J2ME最佳实践与UI设计关键知识点 #### 一、J2ME概述与MIDP版本 J2ME(Java 2 Micro Edition),由Sun Microsystems发布,是为小型设备和消费类电子产品设计的Java平台标准。其核心是MIDP(Mobile Information ...

    J2ME游戏课程设计

    **J2ME游戏课程设计详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备、嵌入式系统等资源有限的环境中运行的应用程序,其中包括游戏。J2ME游戏课程设计是学习移动游戏开发的重要...

    J2ME课程设计_贪吃蛇

    **J2ME课程设计——贪吃蛇** J2ME(Java Micro Edition)是Java平台的一个重要分支,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。在J2ME平台上进行课程设计,可以让我们学习到Java语言的基础...

    基于J2ME平台的手机游戏贪吃蛇程序的设计与实现

    ### 基于J2ME平台的手机游戏贪吃蛇程序的设计与实现 #### 一、课题背景与意义 随着移动通信技术的迅速发展以及智能手机的普及,移动应用特别是手机游戏已经成为人们日常生活中不可或缺的一部分。Java作为一种跨...

    J2ME课程设计样板

    课程设计的核心是开发一个个人通信录应用程序,该应用展示了J2ME在移动设备上的高级用户界面(UI)应用和数据持久化处理。 **设计目的:** 1. 学生将学习如何整合基础和专业知识,掌握设计过程和方法。 2. 理解程序...

    J2me 轻量级UI控件-lwuit1.2.1

    LWUIT 1.2.1 是该工具包的一个版本,它专注于提供一套强大的、可定制的UI控件,同时尽量减少对设备资源的需求。尽管LWUIT被设计为轻量级,但如描述中提到的,它的大小仍然接近400KB,这在一些内存受限的设备上可能...

    j2me设计

    【标题】:J2ME设计 在移动设备的早期阶段,Java 2 Micro Edition(J2ME)是一种广泛使用的开发平台,用于创建能在小型设备上运行的应用程序,比如早期的智能手机和平板电脑。"J2ME公交车查询系统"是利用J2ME技术...

Global site tag (gtag.js) - Google Analytics