JAVA中的JTextField控件,如何只能输入数字?
答案:2 悬赏:70
解决时间 2021-02-12 00:43
- 提问者网友:呆萌心雨
- 2021-02-11 04:40
JAVA中的JTextField控件,如何只能输入数字?
最佳答案
- 二级知识专家网友:ー何必说爱
- 2021-02-11 06:01
Pattern p = Pattern.compile("^\\d*$");
Matcher m = p.matcher(((JTextField)e.getSource()).getText());
Matcher m = p.matcher(((JTextField)e.getSource()).getText());
全部回答
- 1楼网友:眠于流年
- 2021-02-11 07:36
看代码:
import java.awt.borderlayout;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.joptionpane;
import javax.swing.jpanel;
import javax.swing.jtextfield;
import javax.swing.swingutilities;
import javax.swing.event.caretevent;
import javax.swing.event.caretlistener;
public class main {
public static void main(string[] args) throws exception {
jframe frame = new jframe("jtextfield 只能输入中文,字母,数字");
jlabel label = new jlabel("输入:");
jtextfield textfield = new jtextfield(20);
// 当 jtextfield 中内容发生改变时触发
textfield.addcaretlistener(new textfieldinputlistener());
jpanel panel = new jpanel();
panel.add(label);
panel.add(textfield);
frame.add(panel, borderlayout.center);
frame.pack();
frame.setlocationrelativeto(null);
frame.setdefaultcloseoperation(jframe.exit_on_close);
frame.setvisible(true);
}
}
class textfieldinputlistener implements caretlistener {
@override
public void caretupdate(caretevent e) {
jtextfield textfield = (jtextfield) e.getsource(); // 获得触发事件的 jtextfield
string text = textfield.gettext();
if (text.length() == 0) {
return;
}
char ch = text.charat(text.length() - 1);
if (!(ch >= '0' && ch <= '9' // 数字
|| ch >= 'a' && ch <= 'z' // 字母
|| ch >= '\u4e00' && ch <= '\u9fa5')) { // 中文,最常用的范围是 u+4e00~u+9fa5,也有使用 u+4e00~ u+9fff 的,但目前 u+9fa6~u+9fff 之间的字符还属于空码,暂时还未定义,但不能保证以后不会被定义
joptionpane.showmessagedialog(textfield, "只能输入中文,字母,数字", "提示", joptionpane.information_message);
swingutilities.invokelater(new runnable() {
@override
public void run() {
// 去掉 jtextfield 中的末尾字符
textfield.settext(text.substring(0, text.length() - 1));
}
});
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯