限制JTextFiled只能输入定长或者数字

来源:互联网 发布:rrt算法是什么 编辑:程序博客网 时间:2024/06/05 21:03

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.JTextField;

/**
 * 限制JTextFiled只能输入定长或者数字
 * @author martin

 */
public class MyJTextField extends JTextField  {
     private int limit = Integer.MAX_VALUE;                      //最大定长数
     private boolean numberOnly;                                    //只能接受数字

     public MyJTextField() {

          addKeyListener(new KeyAdapter() {

               @Override
               public void keyTyped(KeyEvent e) {
                    if(getText().length() + 1 > limit) {

                         deleteInputChar(e);
                         return;
                    }
                    if (numberOnly) {
                         char input = e.getKeyChar();
                              if (!Character.isDigit(input)) {

                                   deleteInputChar(e);
                              }
                         }
                    }

                    private void deleteInputChar(KeyEvent source) {
                         source.setKeyChar((char) KeyEvent.VK_CLEAR);
                    }
               });

          }

 

          public void setMaxTextLength(int limit) {
               if(limit < 0) {
                    return;
               }
               this.limit = limit;
          }

 

          public int getMaxTextLength() {
               return limit;
          }

 

          public void setNumberOnly(boolean numberOnly) {
               this.numberOnly = numberOnly;
          }

 

          public boolean getNumberOnly() {
               return numberOnly;
          }   
     }

}

原创粉丝点击