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

📄 inputtext.java

📁 j2me的高级界面输入法。很简单很适用的
💻 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 + -