技术开发 频道

J2ME中用低级界面实现简单的数字输入

  【IT168 技术文档】最近在写一个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()方法来进行实际的侦测。

0
相关文章