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

来源:互联网 发布:斯梅尔悖论知乎 编辑:程序博客网 时间:2024/05/22 16:50

作者:大工608  文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=953

最近在写一个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()方法来进行实际的侦测
有什么问题email:joyby@163.com

 


原创粉丝点击