想知道,怎样控制JTextField输入字符的长度为256个byte
多谢!

解决方案 »

  1.   

    可以实现Document实现。具体就是重写一个JTextField,重载其中的    protected Document createDefaultModel() {
            return new 你自己的Document();
        }自己实现吧,就提示到这儿了
      

  2.   


       JTextField.addKeyListener(new   KeyListener()
          {
          public void keyTyped(KeyEvent e)
          {
              if(JTextField.getText().length()>128&&e.getKeyChar()!='\b')
              {
                  e.setKeyChar('\0');
                  JOptionPane.showMessageDialog(null, "已达最大长度!");
              }
          }
          public void keyPressed(KeyEvent e){}
          public void keyReleased(KeyEvent e){}
      });在这里我是按String的内码(utf-16)来算你要求的byte数的(1:2)
    如果你要求的是本地默认字符集,则就JTextField.getText().getBytes().length来判断好了
      

  3.   


    如何让用户输入超过256个字节之后,再不能输入新的字符
    重写Document()是输入以后再判断呢,还是输入超过后再判断,请指教!
      

  4.   

    参考我的代码:import java.awt.Dimension;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;import javax.swing.JFrame;
    import javax.swing.JTextField;public class test1 extends JFrame {
    public test1() {
    this.setLayout(null);
    this.setSize(new Dimension(400, 200));
    final JTextField txt = new JTextField();
    txt.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    char c = e.getKeyChar();
    if (Character.isDigit(c) && txt.getText().trim().length() < 10)//只允许数字,且长度不大于10
    return;
    e.consume();
    }
    });
    txt.setBounds(50, 50, 120, 20);
    this.add(txt);
    this.setVisible(true); } public static void main(String args[]) {
    new test1();
    }
    }
      

  5.   


    public Document createDefaultModel() {
             return new JTextFieldLimit();
         }class   JTextFieldLimit extends PlainDocument   {
    public void insertString(int offset, String str, AttributeSet attr)
    throws BadLocationException{
    if(str == null)
    {
    return;
    }
    if((getLength()+str.length())<=256 )   {
    str = str.toUpperCase();
    super.insertString(offset,str,attr);
    }  
    }   
    }
    }
      

  6.   

    单单重写Document也是不行的,还要考虑到copy/paste的功能。