如何使一个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 来一步一步验证 出问题了 为什么会输出这样的值(想不到的值) 求解???? 发个有难度的贴 【请教】c:foreach 标签的使用 怎么在一台机子上模拟java socket的通信功能 如何去掉对话框右上角上的红色小叉? 一个菜鸟的问题!! 新手问题,怎么使用TimerTask,最好能给个例子。 EXE 我的想法能实现吗? 为什么编译成功的程序用java.exe 运行却显示失败呢? 请教各位关于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);
}
}