网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 其它技术 > JFormattedTextField和格式化输入  

JFormattedTextField和格式化输入

2003-08-11  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  学习用最少的工作量达到格式化文本输入目的
  
  作者:John Zukowski 翻译:Sean
  
  2002.6.
  
  
  
  利用输入验证和焦点监听接收格式化输入不会很困难。在这篇文章里,John向大家展示了如何用JFormattedTextField 组件提示输入数字,日期以及格式化的输入信息。
  
  
  
  J2SE 1.4版本里面,加入了两个新的Swing组件:JSpinner和JFormattedTextField。我们在Merlin的魔术专栏的开始已经介绍了JSpinner组件,现在我们来了解一下JFormattedTextField。
  
  
  
  尽管JFormattedTextField组件的外表跟JTextField看上去是一样的,但它们的行为却是完全不同。最简单的情况下,你可以给出一个电话号码的掩码输入\"(###) ###-####\",JFormattedTextField不会接受任何不符合这样格式的输入。复杂点的情况是有一个显示格式和一个输入格式。举个例子来说,默认的日期输入格式允许有效的月份或者日期编辑情况下在光标的位置滚动。
  
  
  
  JFormattedTextField可以接收的输入一是被mask显式定义好了,二则是被组件的某一个值所指定了。基于后一种情况下,组件用了Factory设计模式来为这个指定的值找到默认的formatter。DefaultFormatterFactory组件产生提前内置了的日期格式,数字格式,java.text.Format的子类,以及任何包罗万象的格式化器。
网管u家u.bitscn@com

  
  
  
  下面让我们来看看如何让这个组件工作起来。
  
  
  
  配置可接收的输入
  
  最经常地,我们用一个MaskFormatter实例来掩码输入。MaskFormatter类在javax.swing.text包中,用一系列字母来指定可输入的范围。这一系列八个字符每一个都代表了输入的一个字符,正如下面的列表:# 一个数字
  
  ? 一个字母
  
  A 一个数字或者字母
  
  * 任何字符
  
  U 一个字母,小写字母被转换到相等的大写字母
  
  L 一个字母,大写字母被转换到相等的小子字母
  
  H 一个十六进制数字(A-F, a-f, 0-9)
  
  \' 转义字符
  
  
  
  
  
  除了MaskFormatter以外,你也可以使用DateFormat和NumberFormat类来指定输入格式。下表显示了一些可能的格式。
  
  
  
  // Four-digit year, followed by month name and day of month,
  
  // each separated by two dashes (--)
  
  DateFormat format =
  
  new SimpleDateFormat(\"yyyy--MMMM--dd\");
  
  DateFormatter df = new DateFormatter(format); 网管网www.bitscn.com
  
  // US Social Security number
  
  MaskFormatter mf1 =
  
  new MaskFormatter(\"###-##-####\");
  
  // US telephone number
  
  MaskFormatter mf2 =
  
  new MaskFormatter(\"(###) ###-####\");
  
  
  
  一旦你确定了输入格式,就可以传递formatter到JFormattedTextField类的构造器,如下示例:
  
  JFormattedTextField ftf1 = new JFormattedTextField(df);
  
  除了依赖于所使用的formatter,还有其他一些配置可选。例如,使用了MaskFormatter,你可以用setPlaceholderCharacter(char)方法设置placeholder字符。同样,日期输入框的话,它可以为你输入框初始化一个值,使得用户知道输入的格式。
  
  
  
  总结
  
  所有一切只是创建一个掩码的输入框。下面程序为你给出了一个完全的例子,该例子通过结合前面的代码片断检验了这个新的格式化输入能力。下面的图片则显示了外观。任意调整mask来检测一下其他掩码输入。
  
  代码:
  
  import java.awt.*;
  
  import javax.swing.*;
  
  import javax.swing.text.*; 中国网管联盟bitsCN.com
  
  import java.util.*;
  
  import java.text.*;
  
  
  
  public class FormattedSample {
  
  public static void main (String args[]) throws ParseException {
  
  JFrame f = new JFrame(\"JFormattedTextField Sample\");
  
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  Container content = f.getContentPane();
  
  content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
  
  // Four-digit year, followed by month name and day of month,
  
  // each separated by two dashes (--)
  
  DateFormat format =
  
  new SimpleDateFormat(\"yyyy--MMMM--dd\");
  
  DateFormatter df = new DateFormatter(format);
  
  JFormattedTextField ftf1 = new
  
  JFormattedTextField(df);
  
  ftf1.setValue(new Date());
  
  content.add(ftf1);
  
  // US Social Security number
  
  MaskFormatter mf1 =
  
  new MaskFormatter(\"###-##-####\"); 网管u家u.bitsCN.com
  
  mf1.setPlaceholderCharacter(\'_\');
  
  JFormattedTextField ftf2 = new
  
  JFormattedTextField(mf1);
  
  content.add(ftf2);
  
  // US telephone number
  
  MaskFormatter mf2 =
  
  new MaskFormatter(\"(###) ###-####\");
  
  JFormattedTextField ftf3 = new
  
  JFormattedTextField(mf2);
  
  content.add(ftf3);
  
  f.setSize(300, 100);
  
  f.show();
  
  }
  
  }
  
  

TAGs输入   格式   JFormattedTextField   字母   组件    
 上一篇:90%的重叠10%的较量 ——C#与Java述评   下一篇:Java联网增强技术
相关文章列表
JFormattedTextField和格式化输入 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.JACOB配置方法及两个常见错误解决
2.用java api进行sort
3.Java中this、super用法简谈
4.Class文件详解 (2)
5.Apache目录服务器中存储Java对象
6.Java 操作二维数组实例
7.Lucene 索引文件格式的规格定义
8.英文打字练习
9.Java如何共享资源
10.editplus能够编译java嘛? 如何设置
最新推荐文章:
1.J2SE实现windows读取网卡的物理地址
2.使用Jetty和DWR创建伸缩性Comet程序
3.经验分享:我的20天项目经历
4.实现Java跨平台运行的十二个注意事项
5.成功的必要条件:开源思想推动创新
6.100行Java代码构建一个线程池
7.用Stripes做Java Web开发
8.j2me创意--Wap浏览器的源代码
9.使用Hashtable对字符串进行碰撞
10.定制 bugzilla 进行项目管理
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的