如何判断jTextField中输入的只能是"012-3456789"中的一个.谢谢各位!

解决方案 »

  1.   

    try
    {
       MaskFormatter formatter=new MaskForamtter("###-#######");
       formatter.setPlaceholderCharacter('0');
       JFormattedTextField ftField=new JFormattedTextField(formatter);
       ftField.setValue("012-3456789");
      ........
    }catch(ParseException e){e.printStackTrace();}
      

  2.   

    参考这个
    public class Chartest 
    {
    public static void main(String[] args)
    {
    Scanner scan = new Scanner(System.in);String str = scan.nextLine();for(int i = 0; i < str.length(); i ++)
    {
    int cast = (int)str.charAt(i);
    if(cast < 48 || cast > 57)
    {
    System.out.print("Error input");
    return;
    }
    }}
    }
      

  3.   

    huyc_fly() 的为正解syhan(藏书人)的ms有一点不沾边jtextfield 跟控制台的dd还有有不小区别的
      

  4.   

    我的意思就是说得到string型的数据后每一位判断
      

  5.   

    to  wangjiaddr(黑脊背):
    我用键盘监听器实现了,
    允许输入1234567890-,但是小键盘的*怎么也控制不了所以我才想用正则解决的
    不过对正则不是太熟悉,希望能得到大家的帮助谢谢
      

  6.   

    to syhan(藏书人) :
    你的 if(cast < 48 || cast > 57)
    是只能控制数字吧,不能控制-吧,
    当然了,这个办法是可以做的我用键盘监听就是通过一个一个字符控制来实现了,
    我就是感觉这种方法不是特别好
      

  7.   

    class IntegerDocument extends PlainDocument
        {
            private final String integer = "0123456789";        public void insertString(int offset , String inputStr ,
                                     AttributeSet attributeSet) throws BadLocationException
            {
                Component component = SwingUtilities.findFocusOwner(MainDialog.this);
                if (component == textField1)
                {
                    if ((textField1.getText().length() + inputStr.length()) >
                        new Integer(dataLength).intValue())
                    {
                        return;
                    }
                }
                else if (component == textField2)
                {
                    if ((textField2.getText().length() + inputStr.length()) >
                        new Integer(dataLength).intValue())
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
                for (int i = 0 , l = inputStr.length(); i < l ; i++)
                {
                    int n = integer.indexOf(inputStr.charAt(i));
                    if (n < 0)
                    {
                        return;
                    }
                }
                super.insertString(offset , inputStr , attributeSet);
            }
        }
      

  8.   

    可以监听键盘事件,也可以监听模型改变,或者干脆自己些个模型.顺便奉劝一句,别学SWING了,免得跟我一样没人要.
      

  9.   

    SWING,呵呵,是不怎么好用
    不过我连AWT都用了好长时间,
    现在学SWT了,感觉有点不适应.
      

  10.   

    private class OnlyDigit extends PlainDocument{
            private JTextField f;        public OnlyDigit(JTextField f){
                this.f = f;
            }
            public void insertString(int offset,
                                     String str, 
                                     AttributeSet attSet) 
            throws BadLocationException{
                StringBuffer tmp = new StringBuffer(f.getText());
                tmp.insert(offset,str);
                Pattern p = Pattern.compile("^\\d*$");//这里可以改简单一点
                Matcher m = p.matcher(tmp.toString());
                if(m.find()){
                    super.insertString(offset,str,attSet);                
                }
            }
        }textfield.setDocument(new OnlyDigit(textfield));