Java只允许输入大写字母的文本框

2014-11-24 08:41:47 · 作者: · 浏览: 1
[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
* upper case characters. It will work even if text is pasted into from
* the clipboard or it is altered via programmatic changes.
* @author HAN
*
*/
public class UpperCaseField extends JTextField {

/**
*
*/
private static final long serialVersionUID = 6854878572763032459L;

public UpperCaseField(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; www.2cto.com
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
}
作者:Gaowen_HAN