最近在写一个j2me程序 其中包括一个数字输入的textfield 在手机上面实现的时候(s40模拟器)数字的输入很烦琐,所以想避开这种问题 于是改用低级界面实现:
     最近在写一个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()方法来进行实际的侦测。
    (责任编辑:海纳百川 qlmzl11268@hotmail.com  TEL:(010)68476606-8007)