jTextField的字符长度设为固定长度,超长不能输入 和 只能输入数字



---------------------------------------------------------------

需要通过他的document来管理。


class MyDocument extends PlainDocument{
   int maxLength =10;
   public MyDocument(int newMaxLength){
      super();
      maxLength = newMaxLength;
   }
   public MyDocument(){
      this(10);
   }

   //重载父类的insertString函数
    public void insertString(int offset,String str,AttributeSet a)throws BadLocationException{
    if(getLength()+str.length()>maxLength){//这里假定你的限制长度为10
         return;
    }
    else{ 
        super.insertString(offset,str,a);

    }    
  }

}


然后用这个类控制你的textfield.
JTextField jTextField1 = new JTextField1();
jTextField1.setDocument(new MyDocument(20));
就可以了.


其实你完全可以在MyDocument的那个insertString方法的中加入自己的判断.
比如,可以控制保证输入的是一个整数,或者浮点数什么的.



---------------------------------------------------------------

因为当你的jTextField通过键盘输入或者拷贝一个字符串的时候,他会调用他的document的insertString方法进行插入操作.
你在这个方法中进行控制的话,可以完全改变插入字符串的效果.比如,当文档的长度超过一定时,就不能插入,也就是什么都不作,直接返回.
还比如,当插入一个不合乎要求的字符串的时候,你仍然可以抛弃.
甚至,你可以做到,不管插入什么字符创,都可以在textfield框中显示你的名字什么的.
---------------------------------------------------------------

那你先
jTextField1.setDocument(new  MyDocument());
试试.

---------------------------------------------------------------

哦.应该给MyDocument类写为Public.
或者把这个类写在你要使用的.java文件里边.

另外需要在前面
import javax.swing.text.*;
---------------------------------------------------------------

我试过了,完全可以.

你把上面写的MyDocument类写成一个public类,这样子的话需要一个MyDocument.java文件来保存它.编译.
然后在使用他的地方,把这个类import就可以.

 

只能输入数字:

 

class NumberListener extends KeyAdapter {
        public void keyTyped(KeyEvent e) {
            String numStr = "0123456789." + (char) 8;
            if (numStr.indexOf(e.getKeyChar()) < 0) {
                e.consume();
                JOptionPane.showMessageDialog(null, "抱歉的告诉您:请输入(数字)", "系统提示",
                        JOptionPane.INFORMATION_MESSAGE);

            }

        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值