📄 selectoption.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 + -