限制文本框的长度为指定值

来源:互联网 发布:淘宝crm软件 编辑:程序博客网 时间:2024/05/21 09:33

在某些程序中有时需要固定文本框的输入长度,比如输入手机号,或者学号等。

此时需要一个工具类,命名为MyDocument

import javax.swing.text.*;@SuppressWarnings("serial")public class MyDocument extends PlainDocument{private int maxLength;public MyDocument(int newLength){super();maxLength = newLength;}public MyDocument(){this(10);}public void insertString(int offset, String str, AttributeSet a)throws BadLocationException{/* * 当前字符串长度与将要插入字符串长度的和大于最大值时, * 则在与之关联的文本框中超过最大长度的字符会自动截断。 */if(this.getLength() + str.length() > maxLength)return ;elsesuper.insertString(offset, str, a);}}

 

当在应用程序中,这个也只能限制最大输入。要想格式正确,则文本框在失去焦点时监听focusLost事件

demo:

import java.awt.BorderLayout;import java.awt.event.*;import javax.swing.*;import com.wsy.util.MyDocument;;public class DocumentText extends JFrame{private JTextField jtf ;private JTextField jtf1;/** *  */private static final long serialVersionUID = 1L;public DocumentText(){jtf = new JTextField();jtf1 = new JTextField();jtf.setDocument(new MyDocument(13));//输入长度为13/* * 匿名内部类监听失去焦点事件 */jtf.addFocusListener(new FocusAdapter(){public void focusLost(FocusEvent e){if(jtf.getText().length() != 13){JOptionPane.showMessageDialog(null, "请输入13位文本");return ;}}});add(jtf1,BorderLayout.CENTER);add(jtf,BorderLayout.NORTH);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setSize(200,100);this.setVisible(true);}public static void main(String[] args){new DocumentText();}}


当输入文本不是固定值时,弹出一个消息提示框。


原创粉丝点击