📄 inputtext.java
字号:
package com.moloon.tools;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
public class InputText
{
public static final byte TEXT=0,ENG=1;//输入类型
public static byte INPUT_TYPE=TEXT;//输入类型
public int INPUT_MAX=10;//最大允许输入长度
public String[] input_src=new String[INPUT_MAX];//输入内容
public final long INPUT_TIME=600;
public long start_time,end_time;
public ShowList testList=new ShowList();
private int inputCount=0;//输入键按下的次数
private int input_mark=0;//只的是输入的下标
private int keyBuffer=-1;//记录上一次按键
public boolean isInput=true;//是否能进行输入
private int count=0;
private int showMaxnum=10;
public static final String[][] INPUTSRC=
{
{"0"},
{"1"},
{"a","b","c","2"},
{"d","e","f","3"},
{"g","h","i","4"},
{"j","k","l","5"},
{"m","n","o","6"},
{"p","q","r","s","7"},
{"t","u","v","8"},
{"w","x","y","z","9"},
};
Font font;
int w=176,h=208;
public InputText()
{
InputSrc.getInputWords("xie");
font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM);
start_time=System.currentTimeMillis();
}
/**处理输入,只处理0--9,传入的keyNum也为0--9*/
public boolean processInput(int keyNum)
{
if(keyNum<0||keyNum>INPUTSRC.length-1)
{
System.out.println("return false");
return false;
}
isInput=true;
testList.clear();
testList.upNum=0;
testList.selectIndex=0;
if(keyBuffer==keyNum)//如果按的是同一个按键
{
inputCount++;
if(inputCount>INPUTSRC[keyNum].length-1)
inputCount=0;
end_time=System.currentTimeMillis();
if((end_time-start_time)<INPUT_TIME)//在允许的输入时间里
{
System.out.println(input_mark+"同一按键允许时间内"+INPUTSRC[keyNum][inputCount]);
input_src[input_mark-1]=INPUTSRC[keyNum][inputCount];
start_time=end_time;
return true;
}else
{
System.out.println("同一按键超出时间");
start_time=end_time;
if (input_mark >= INPUT_MAX)
return false;
input_src[input_mark]=INPUTSRC[keyNum][inputCount];
inputCount=0;
input_mark++;
}
}else
{
System.out.println(keyBuffer+"不同按键"+keyNum);
start_time =System.currentTimeMillis();
// 不同按键
keyBuffer = keyNum;
inputCount = 0;
// 可添加时
if (input_mark < INPUT_MAX)
{
// 增加字母
input_src[input_mark] = INPUTSRC[keyNum][inputCount];
input_mark++;
return true;
}
}
return true;
}
// 返回拼音的字符串
private final String getInputString()
{
String s="";
for(int i=0;i<input_mark;i++)
if(input_src[i]!=null)
s+=input_src[i];
return s;
}
private final String getWord(String s)
{
return InputSrc.getInputWords(s);
}
private void addSrc()
{
String s="";
if(INPUT_TYPE==TEXT)
s=getWord(getInputString());
if(INPUT_TYPE==ENG)
s=getInputString();
if(s==null)
return;
for(int i=0;i<s.length();i++)
{
testList.initList(showMaxnum,10, 10);
testList.addData(new String(s.substring(i, i+1)),i);
}
}
public void showInputContent(Graphics g,int x,int y)
{
count++;
if(!isInput)
return;
if(INPUT_TYPE==TEXT)
{
showText(g,x,y);
}else
{
}
}
private void showText(Graphics g,int x,int y)
{
addSrc();
int barH=50;
int barW=w-2*x;
drawRound(g,x, y, barW, barH,-1);
g.fillRect(x, y+barH/2, barW, 2);
g.drawString(""+getInputString(), x+10, y+(barH>>1)+5, 20);
if(testList.getListSize()>testList.showMax)
{
g.drawString("<", (x+barW)-20+count%2, y+5, 20);
g.drawString(">", (x+barW)-10-count%2, y+5, 20);
}
showMaxnum=barW/18;
// if(testList==null)
// return;
if(testList.getListSize()<0)
return;
int startX=x+10;//10;
int startY=y+5;//30;
int offset=15;
for(int i=testList.upNum;i<testList.getListSize()&&(i-testList.upNum)<testList.showMax;i++)
{
if(i==(testList.upNum+testList.selectIndex))//选中
{
g.setColor(0x00ff00);
g.fillRect(startX+testList.selectIndex*offset-2, startY, 15, 15);
}
String tabName=(String)testList.getData(i);
g.setColor(0xff0000);
g.drawString(""+tabName, startX+(i-testList.upNum)*offset,startY, 20);
}
// System.out.println("list.size."+testList.getListSize());
}
public void left()
{
if(!isInput)
return;
testList.Left();
}
public void right()
{
if(!isInput)
return;
testList.Right();
}
/* 删除一个输入字符 */
public void delInputChar()
{
if(!isInput)
return;
keyBuffer = -1;
if (input_mark > 0)
{
input_mark--;
}
}
public String getResult()
{
if(!isInput)
return null;
isInput=false;
input_mark=0;
if(testList.getListSize()>0)
return (String)testList.getData();
return null;
}
private static void drawRound(Graphics g,int x,int y,int w,int h,int bgColor)
{
if(bgColor>-2)
{
g.setColor(bgColor);
g.fillRect(x,y,w,h);
}
g.setColor(0x03B1CA);
g.drawRect(x, y, w, h);
g.drawRect(x+1,y+1, w-2, h-2);
g.setColor(0x025970);
g.drawRect(x,y,w,h);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -