比如值允许输入6个字符

解决方案 »

  1.   

    JTextField(String text,int columns)
    把columns设为6 就可以了.
      

  2.   

    JTextField textField1=new JTextField(6);
      

  3.   

    楼上的都不对import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.ParseException;import javax.swing.JFormattedTextField;
    import javax.swing.JFrame;
    import javax.swing.text.MaskFormatter;public class T {
    public static void main(String[] args) throws ParseException {
    final JFormattedTextField tf = 
    new JFormattedTextField(new MaskFormatter("******"));

    JFrame f = new JFrame();
    f.getContentPane().add(tf, BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }
      

  4.   

    JTextField(String text,int columns)
    中的columns并不能保证只能输入columns个字符,只是一个基准,会根据你的布局相应增加或减少字符。
      

  5.   

    public class NumberTextField extends JTextField
    {
    //是否支持有符号数
    boolean isSignedNumber = false;
    //数据的上限
    float fMaxNum = 0.0f;
    //数的下限
    float fMinNum = 0.0f; private NumDoc doc = null; private float fDefaultNum = 0.0f;
    public NumberTextField()
    {
    super();
    doc = new NumDoc(this);
    setDocument(doc);
    addDefaultFocusAdapter();
    }
    public NumberTextField(int len)
    {
    super(len);
    doc = new NumDoc(this);
    setDocument(doc);
    addDefaultFocusAdapter();
    }
    public NumberTextField(float val, int len)
    {
    super(len);
    doc = new NumDoc(this);
    setDocument(doc);
    setFloatValue(val);
    addDefaultFocusAdapter();
    }

    //设定输入数据的范围
    public void setLimitedValues(float minVal, float maxVal)
    {
    if(minVal > maxVal)
    {
    new NumberFormatException("Min value must be little than x value").printStackTrace();
    }
    fMaxNum = maxVal;
    fMinNum = minVal;
    fDefaultNum = minVal;
    }
    public void setLimitedValues(float minVal, float maxVal, float fDefaultVal)
    {
    if (minVal > maxVal)
    {
    new NumberFormatException("Min value must be little than Max value").printStackTrace();
    }
    fMaxNum = maxVal;
    fMinNum = minVal;
    fDefaultNum = fDefaultVal;
    }
    }
    class NumDoc extends PlainDocument
    {
    NumberTextField numField; public NumDoc(NumberTextField field)
    {
    numField = field;
    } public void insertString(int offset, String str, AttributeSet attr)
    throws BadLocationException
    {
    //判断是否可以插入字串.
    boolean isAccept = true;
    float val = 0.0f;
    int len = getLength();
    //使用StringBuffer, 修改插入的部分的bug
    StringBuffer buffer = new StringBuffer(getText(0, len));
    buffer.insert(offset, str);
    String text = buffer.toString();
    if(text.equals("-"))
    {
    isAccept = numField.isSignedNumber;
    }else
    {
    try
    {
    val = Float.parseFloat(text);
    }catch(NumberFormatException e)
    {
    isAccept = false;
    }
    } if(isAccept && numField.isSignedNumber == false)
    {
    if(val < 0)
    isAccept = false;
    } if(isAccept && !numField.isDecimalSupport)
    {
    if(text.indexOf('.') != -1 || text.indexOf('d') != -1
    || text.indexOf('D') != -1 || text.indexOf('f') != -1
    || text.indexOf('F') != -1)
    {
    isAccept = false;
    }
    }
    if(isAccept && numField.isLimitedSupport)
    {
    if(!isInScope(val))
    isAccept = false;
    } if(isAccept)
    {
    super.insertString(offset, str, attr);
    }else
    {
    Toolkit.getDefaultToolkit().beep();
    }
    } private boolean isInScope(float val)
    {
    boolean bRet = true; if(numField.fMinNum > 0)
    {
    if(val > numField.fMaxNum)
    bRet = false;
    }
    else if(numField.fMaxNum < 0)
    {
    if(val < numField.fMinNum)
    bRet = false;
    }else
    {
    if((val < numField.fMinNum) || (val > num.fMaxNum))
    bRet = false;
    }
    return bRet;
    }
    } private void addDefaultFocusAdapter()
    {
    addFocusListener(new java.awt.event.FocusListener()
    {
    public void focusGained(java.awt.event.FocusEvent e)
    {
    selectAll();
    }
    public void focusLost(java.awt.event.FocusEvent e)
    {
    }
    });
    }
      

  6.   

    来个简单点的。
    textField.addKeyListener(new KeyListener() {
    public void keyTyped(KeyEvent e) {
    if (textField.getText().length() > 指定长度 && e.getKeyChar() != '\b')
    e.setKeyChar('\0');
    } public void keyPressed(KeyEvent e) {
    } public void keyReleased(KeyEvent e) {
    }
    });我以用它好多年 :-)
      

  7.   

    如果用户用 Ctrl+V 粘贴文本怎么办? 那样的话这招就不灵了。