最近在写一个j2me程序 其中包括一个数字输入的textfield 在手机上面实现的时候(s40模拟器)数字的输入很烦琐,所以想避开这种问题 于是改用低级界面实现:
	
	
		
			
				
					| 
						 
						 
							  private StringBuffer sb=new StringBuffer(); //定义一个StringBuffer用来保存输入的数字
						 
						
							  private int len=4; //想输入的数字的长度
						 
						
							  private int temp; //取数字
						 
						
							  protected void paint(Graphics g) 
  { 
  g.setColor(WHITE); 
  g.fillRect(0,0,getWidth(),getHeight()); 
  g.setColor(BLACK); 
  g.drawString(sb.toString(),getWidth()/2,getHeight()/2,Graphics.TOP|Graphics.HCENTER); 
//显示输入内容
						 
						
							  } 
  protected void keyPressed(int keynum) 
  { 
  if (sb.length()==len) //开始键功能描述
						 
						
							  { 
  switch (keynum) 
  { 
  case KEY_STAR: 
  temp=Integer.parseInt(sb.toString()); //得到了屏幕中输入的数字 接下来自己可以利用数字按下*开始动能
						 
						
							  break; 
  default: 
  break; 
  } 
  } 
  if (sb.length() { 
  switch (keynum) 
  { 
  case KEY_NUM1: 
  sb.append("1"); 
  break; 
  case KEY_NUM2: 
  sb.append("2"); 
  break; 
  case KEY_NUM3: 
  sb.append("3"); 
  break; 
  case KEY_NUM4: 
  sb.append("4"); 
  break; 
  case KEY_NUM5: 
  sb.append("5"); 
  break; 
  case KEY_NUM6: 
  sb.append("6"); 
  break; 
  case KEY_NUM7: 
  sb.append("7"); 
  break; 
  case KEY_NUM8: 
  sb.append("8"); 
  break; 
  case KEY_NUM9: 
  sb.append("9"); 
  break; 
  case KEY_NUM0: 
  sb.append("0"); 
  break; 
  default: break; 
  } 
  } 
  if(sb.length()>0) //退格键函数描述
						 
						
							  { 
  if(keynum==KEY_POUND) sb.deleteCharAt(sb.length()-1); 
  } 
  repaint(); 
  } 
  protected void keyReapeated(int keynum) 
  { 
  if(sb.length()>0) //长按一次性去除建函数描述
						 
						
							  if(keynum==KEY_POUND) sb=null; } 
  repaint(); 
  }
						 
					 | 
				
			
		
	
	
		  注意:keyReapeated()方法JTWI 并未做硬性规定,所以我们在开发的时候一定要用Canvas.hasRepeatedEvents()方法来进行实际的侦测。