Topic: 求一个只能填写数字的JTextField组件

  Print this page

1.求一个只能填写数字的JTextField组件 Copy to clipboard
Posted by: jfml
Posted on: 2003-04-18 10:56

谢谢

2.Re:求一个只能填写数字的JTextField组件 [Re: CrazyJavar] Copy to clipboard
Posted by: Jove
Posted on: 2003-04-18 11:02

发信人: Jove (死生契阔,与子相悦,执子之手,与子偕老), 信区: Java
标 题: 规定格式的JTextField
发信站: 日月光华 (2003年03月30日00:37:23 星期天), 站内信件

一般检查一个JTextField中的输入是否合法,
会捕获修改事件;或是开个线程定期检查
在1.4中提供了JFormatedTextField,似乎更方便一些
但他使用JavaBean技术,也就是在修改原值时会检查是否合法,如果失败则拒绝修改
因而,一个本只能填数字的textfield,
用户可以输入字母,
而当回车等事件触发时 JFormattedTextField进行检查,回复到上一次正确的状态
往往这不是我们想要的,
比较理想的方式是,
如果这个字段只接受数字,则按下字母键应不发生任何效果

Java图形图象Swing卷实在是本不错的书,这一块他给了很有利的例子
借鉴的,我们可以很容易且优雅的实现一个只接受数字的TextField

JTextField salary=new JTextField(10);
salary.setDocument(new NumOnlyDocument());

class NumOnlyDocument extends PlainDocument{
public void insertString(int offset, String s, AttributeSet attrSet)
throws BadLocationException {
try {
Integer.parseInt(s);
}
catch (NumberFormatException ex) {
return;
}
super.insertString(offset,s,attrSet);
}
}

3.Re:求一个只能填写数字的JTextField组件 [Re: CrazyJavar] Copy to clipboard
Posted by: floater
Posted on: 2003-04-18 14:52


MaskFormatter mf = null;
try
{
mf = new MaskFormatter("(###) ###-####");
}
catch(Exception e)
{
e.printStackTrace();
}
JFormattedTextField jftf1 = new JFormattedTextField(mf);
jftf1.setColumns(20);


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923