Java只允许输入数字的文本框
Java只允许输入数字的文本框
Java只允许输入数字的文本框:
- package com.han;
- import javax.swing.JTextField;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.Document;
- import javax.swing.text.PlainDocument;
- /**
- * Customized fields can easily be created by extending the model
- * and changing the default model provided. For example,
- * the following piece of code will create a field that holds only
- * digit characters. It will work even if text is pasted into from
- * the clipboard or it is altered via programmatic changes.
- * @author HAN
- *
- */
- public class DigitOnlyField extends JTextField {
- /**
- *
- */
- private static final long serialVersionUID = 8384787369612949227L;
- public DigitOnlyField(int cols) {
- // super() 可以被自动调用,但是有参构造方法并不能被自动调用,只能依赖
- // super关键字显示地调用父类的构造方法
- super(cols);
- }
- protected Document createDefaultModel() {
- return new UpperCaseDocument();
- }
- static class UpperCaseDocument extends PlainDocument {
- /**
- *
- */
- private static final long serialVersionUID = -4170536906715361215L;
- public void insertString(int offs, String str, AttributeSet a)
- throws BadLocationException {
- if (str == null) {
- return;
- }
- char[] upper = str.toCharArray();
- String filtered = "";
- for (int i = 0; i < upper.length; i++) {
- if (Character.isDigit(Character.codePointAt(upper, i))){
- filtered += upper[i];
- }
- }
- super.insertString(offs, filtered, a);
- }
- }
- }
评论暂时关闭