JTextField如何只让其输入4个字符 JTextFeild控件,限制长度,只输入4个字符,符合实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class NWNumberField extends JTextField implements RendererComponent{private Toolkit toolkit;private int maxValue = Integer.MAX_VALUE;private int minValue = Integer.MIN_VALUE;private int maxLength;public NWNumberField(int value, int maxLength) {super();this.maxLength = maxLength;setValue(new Integer(value));}public void setMaxValue(int maxValue){this.maxValue = maxValue;}protected int getMaxValue(){return this.maxValue;}public Object getValue() {int retVal = 0;try { retVal = Integer.parseInt(getText()); if(retVal > maxValue){ retVal = maxValue; }else if(retVal<minValue){ retVal = minValue; }} catch (NumberFormatException e) {// This should never happen because insertString allows// only properly formatted data to get in the field.//toolkit.beep();retVal = 0;}return new Integer(retVal);}public void setValue(Object value) {if(value==null || value.equals(""))setText("0");else setText(value.toString());}protected Document createDefaultModel() {return new NumberDocument(this);}protected class NumberDocument extends PlainDocument {NWNumberField field ;public NumberDocument(NWNumberField field){this.field = field;}public void insertString(int offs, String str, AttributeSet a)throws BadLocationException {if(str==null||str.equals(""))return ;char[] source = str.toCharArray();char[] result = new char[source.length];int j = 0;for (int i = 0; i < result.length; i++) {if (Character.isDigit(source[i]))result[j++] = source[i];else {//toolkit.beep(); Toolkit.getDefaultToolkit().beep();}}StringBuffer sb = new StringBuffer();sb.append(field.getText());sb.insert(offs,new String(result, 0, j));try{if(maxLength>0 && this.getLength()< maxLength && Integer.parseInt(sb.toString())<=field.getMaxValue()){super.insertString(offs, new String(result, 0, j), a);}}catch (NumberFormatException ex){}}}public void setRendererValue(Object renderer) { this.setValue(renderer+"");}public Object getRendererValue() {return this.getValue();}public Component getNormalRenderer() {return null;}} 在keylistener监听,如果getText().length()>4就进行操作 antlr 实现while循环语句 java游戏问题 在线等如何将字符串转换成整型 再帮我看一段代码,马上结贴 请问:Map中存放若干整数对象,现要求将其排序后放入List对象中,谢谢! 还是正则表达式的问题,这次是替换的问题了,请高手务必救急,谢谢啊 初学Swing,求教卡片布局 请问怎样修改、删除、追加XML中子项的值? 我浏览贴子的时候怎么变成了小框框? 哪里有core java的e版down啊? java有没有类可以实现就如vc里那样的控件,控件可以有不同的选项,然后拖动来看不同的选项 关于Swing中的KeyListener的问题?困扰了我好久了!
private Toolkit toolkit;
private int maxValue = Integer.MAX_VALUE;
private int minValue = Integer.MIN_VALUE;
private int maxLength;
public NWNumberField(int value, int maxLength) {
super();
this.maxLength = maxLength;
setValue(new Integer(value));
}
public void setMaxValue(int maxValue){
this.maxValue = maxValue;
}
protected int getMaxValue(){
return this.maxValue;
}public Object getValue() {
int retVal = 0;
try {
retVal = Integer.parseInt(getText());
if(retVal > maxValue){
retVal = maxValue;
}else
if(retVal<minValue){
retVal = minValue;
}} catch (NumberFormatException e) {
// This should never happen because insertString allows
// only properly formatted data to get in the field.
//toolkit.beep();
retVal = 0;
}
return new Integer(retVal);
}public void setValue(Object value) {if(value==null || value.equals(""))
setText("0");
else
setText(value.toString());
}protected Document createDefaultModel() {
return new NumberDocument(this);
}protected class NumberDocument extends PlainDocument {
NWNumberField field ;
public NumberDocument(NWNumberField field){
this.field = field;
}
public void insertString(int offs,
String str,
AttributeSet a)
throws BadLocationException {if(str==null||str.equals(""))
return ;char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0;for (int i = 0; i < result.length; i++) {
if (Character.isDigit(source[i]))
result[j++] = source[i];
else {
//toolkit.beep();
Toolkit.getDefaultToolkit().beep();
}
}StringBuffer sb = new StringBuffer();
sb.append(field.getText());
sb.insert(offs,new String(result, 0, j));
try{
if(maxLength>0 && this.getLength()< maxLength && Integer.parseInt(sb.toString())<=field.getMaxValue()){
super.insertString(offs, new String(result, 0, j), a);
}
}catch (NumberFormatException ex){}
}
}
public void setRendererValue(Object renderer) { this.setValue(renderer+"");
}public Object getRendererValue() {return this.getValue();
}public Component getNormalRenderer() {return null;
}}