如何使一个TextField只接受数字的输入? Java 的事件机制不是这样的,你需要 addKeyListener不过你为什么不使用 javax.swing.JFormattedTextField 呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import javax.swing.*;import javax.swing.text.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class MyTextField extends JTextField{ public MyTextField() { super(); } public MyTextField(int len) { super(len); } public MyTextField(String str_text,int len) { super(str_text,len); } protected Document createDefaultModel() { return new NumberOnlyDocument(); } static class NumberOnlyDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (str == null) { return; } char[] upper = str.toCharArray(); int length=0; for (int i = 0; i < upper.length; i++) { if (upper[i]>='0'&&upper[i]<='9') { upper[length++] = upper[i]; } } super.insertString(offs, new String(upper,0,length), a); } } }也可以考虑JFormattedTextField 两者实现的结果应该差不多的 String s=…;String s1="";for(int i=0;i<s.length();i++){ if((s.charAt(i)>'0')||(s.charAt(i)<'9')){ s1=s1+s.charAt(i); } else{………}} if (newStr.length() > oldStr.length()) { String resultStr = newStr.substring(oldStr.length(), newStr .length()); Pattern p=Pattern.compile(REGX); Matcher m=p.matcher(resultStr); if(m.find()){ text.setText(newStr); } else{ text.setText(oldStr); } } 重写控件 JTextField 的方法 setText 可以使用 StringBuffer 来一步一步验证 求前辈,解决一下Java Swing控件按钮需要点击两次,才能运行的错误!急急急! preparestatement的setInt的问题 请进 如何增加MyEclipse7.0控制台打印信息的行数 jdk 运行问题 求救,关于prefuse 高分求一Tcp/IpSocket例子或框架程序! 用javamail往exchange server 邮件服务器发送文件时主题词的问题 大神请进,如下日志输出场景能否通过log4j的配置搞定 JDK的CLASSPATH问题? 小问题,送分 请教各位关于finalize()方法的问题 如何得到键盘焦点,急!!!!!
import javax.swing.text.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class MyTextField extends JTextField
{
public MyTextField()
{
super();
}
public MyTextField(int len)
{
super(len);
}
public MyTextField(String str_text,int len)
{
super(str_text,len);
}
protected Document createDefaultModel() {
return new NumberOnlyDocument();
} static class NumberOnlyDocument extends PlainDocument
{
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException
{
if (str == null)
{
return;
}
char[] upper = str.toCharArray();
int length=0;
for (int i = 0; i < upper.length; i++)
{
if (upper[i]>='0'&&upper[i]<='9')
{
upper[length++] = upper[i];
}
}
super.insertString(offs, new String(upper,0,length), a);
}
}
}也可以考虑JFormattedTextField 两者实现的结果应该差不多的
String s1="";
for(int i=0;i<s.length();i++){
if((s.charAt(i)>'0')||(s.charAt(i)<'9')){
s1=s1+s.charAt(i);
}
else{………}
}
String resultStr = newStr.substring(oldStr.length(), newStr
.length());
Pattern p=Pattern.compile(REGX);
Matcher m=p.matcher(resultStr);
if(m.find()){
text.setText(newStr);
}
else{
text.setText(oldStr);
}
}