⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectoption.java

📁 j2me开发的1个简单的wap浏览器.程序框架还是不错的.包括对低级事件的处理.通信框架,标签的解析
💻 JAVA
字号:
/********************************************************************
 * 项目名称				:<b>j2me学习 J2me Wap Explorer</b>			<br/>
 * 
 * Copyright 2005-2006 Wuhua. All rights reserved </br>
 *
 * 本程序只用于学习目的,不能用于商业目的。如有需要请联系作者
 ********************************************************************/
package org.wuhua.wap.ui;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;

import org.wuhua.wap.log.Logger;
import org.wuhua.wap.ui.core.Platform;

 

/**
 * <b>类名:TextField.java</b> </br> 
 * 编写日期: 2006-12-28 <br/>
 * 程序功能描述: <br/>
 * Demo: <br/>
 * Bug: <br/>
 * 
 * 程序变更日期 :<br/> 
 * 变更作者 :<br/> 
 * 变更说明 :<br/>
 * 
 * @author wuhua </br> <a href="mailto:rrq12345@163.com">rrq12345@163.com</a>
 */
public class SelectOption extends Part implements javax.microedition.lcdui.CommandListener{
 


	private static Logger logger = Logger.getLogger("SelectOption");
	private Command ok = new Command("确定", Command.OK, Command.SCREEN);
	private Command cancel = new Command("取消", Command.CANCEL, Command.SCREEN); 
	
	public static final int TEXT = 0x00000;
	public static final int PASSWORD = 0x10000;
	
	private int numOfEls;
	
	/**
	 * 最多显示的字符数字
	 */
	private int maxSize;
	
	private char[] textChars;
 
	private Image icon;
 
	private SelectOptionGUI sgui;
	private int width; 
	
	public SelectOption(String text[],Image icon, int maxSize) {
		super(0, 22, 0, 0);
		this.maxSize = maxSize;
		if(text != null
				&& text.length >= 1) {
			this.setString(text[0]);
		}
		
		this.view[HEIGHT] = font.getHeight();
	 
		this.icon = icon;
		sgui = new SelectOptionGUI("列表选择",text); 
		sgui.setCommandListener(this);
	}
	
	 

	private void setString(String text){
		if(text == null)
			text = "";
		this.text = text;
		textChars = text.toCharArray();
		if(textChars.length >= this.maxSize){
			this.numOfEls = this.maxSize;
		}else{
			this.numOfEls =textChars.length;
		}
		
		
		 
	}
	
	
	/**
	 * 改变部件的位置
	 */
	public void changePosition(int x, int y, int width, int height){
		super.changePosition(x,y,width,height);
		//textX = view[X] + FontUtil.getWidth(font,label)  ;
	 
	}
	
	public void paint(Graphics g) {
		this.font = g.getFont();
		 
		paintTextImpl(g);

	}
	
	 
	
	/**
	 * 绘制文本,同时绘制文本框
	 * @param g
	 */
	void paintTextImpl(Graphics g){
		 
		int charWidth = 0;
		int charHeight = view[Y] ;
	
		 
	    g.setColor(this.fontColor);
		for(int i=0 ; i < this.numOfEls; i++){
			g.drawChar(this.textChars[i],charWidth + 4 + view[X],charHeight + 1,Graphics.TOP | Graphics.LEFT); 
			charWidth = charWidth +  font.charWidth(textChars[i]);
		}
		g.drawImage(icon, charWidth +  view[X] +  9, charHeight + 5, Graphics.TOP | Graphics.LEFT);
	
		paintRect(g, charWidth + icon.getWidth() + 10 );
		
	 
	}

	/*
	 * 如果选择中了,加粗
	 */
	private void paintRect(Graphics g, int width) {
		this.width = width + view[X];
		if(this.hasFocus){
			g.setColor(0x0A24C3);
			g.drawRect(view[X] , view[Y] , width,  font.getHeight());
		}		
		else
			g.setColor(this.bgColor);
		
		g.drawLine(width +  view[X] - icon.getWidth() - 5  , view[Y] + 2,width + view[X]-icon.getWidth() -5  , view[Y] + font.getHeight());
		g.drawRect(view[X]+1, view[Y]+1, width,  font.getHeight());
	}
	 
	
	 
	
	 

	 

	public void onClick(int keyCode) {	
		if (keyCode >= 48 && keyCode <= 58) {
			addTextImpl(keyCode);
		}else if(keyCode == Platform.KEY_CLEAR) {
			deleteTextImpl();
		}else if(keyCode == Platform.KEY_ENTER){
			openGUIFor();
		}

	}

	 
	
	 
	
	
	private void openGUIFor() {
		display.setCurrent(sgui);
	}

	 
	
	/**
	 * 聚焦
	 * @param hasFocus
	 */
	public void setHasFocus(boolean hasFocus){
		this.hasFocus = hasFocus;
	}
 
	
	
	//添加数据
	private void addTextImpl(int keyCode){
		if(text.length() >= this.maxSize)
			return;
		int k = keyCode - 48;
		text = text + String.valueOf(k);
		setString(text);
	}
	// 清除数据
	private void deleteTextImpl() {
		text = text.substring(0, text.length() > 1 ? text.length() - 1
								: 0);
		setString(text);
	}

	public int getHeight() {
		 
		return this.font.getHeight() + 2; 
	}
	
	public int getWidth() {
		return width + 4;
	}
	
	
	class SelectOptionGUI extends  List   {

		public SelectOptionGUI(String title,String text[]) {
			super(title, List.IMPLICIT);
			addItem(text);
			this.addCommand(ok);
			this.addCommand(cancel);
		}
		void addItem(String text[]){
			if(text == null)
				return;
			for(int i=0; i<text.length; i++){
				this.append(text[i], null);
			}
			
		}
		
		 
		
	}

	public void commandAction(Command c, Displayable d) {
		 if(c == ok){
			 this.setString(sgui.getString(sgui.getSelectedIndex()));
			
		 }
		 display.setCurrent(this.container);
		
	}
 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -