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就进行操作 关于Menu bar的问题 java程序问题?? 请问有没有办法把一个Label上的文字横过来显示 谁能帮我用SWING完成这个图形啊? 哪位大侠用socket写过client\server程序? 请指教 怎么把jTextArea1的内容保存为一个文件? 我想办一个经典电脑书籍网上销售点,各位认为如何啊? 急问:IBM硬盘如何取消他的自检??? 数据流中中文正确读取的问题?? 难道数据库不支持这个功能 ? 谢谢! 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;
}}