发信人: 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);
}
}