(转)JFormattedTextField和格式化输入

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Java项目开发全程实录》这一本书从开发背景、需求分析、系统功能分析、数据库分析、数据库建模、网站开发和网站发布或者程序打包与运行,每一过程都进行了详细的介绍。 目 录 第1章 进销存管理系统(Swing+SQL Server 2000实现) 1 教学视频:1小时42分 1.1 开发背景 2 1.2 系统分析 2 1.2.1 需求分析 2 1.2.2 可行性分析 2 1.2.3 编写项目计划书 4 1.3 系统设计 6 1.3.1 系统目标 6 1.3.2 系统功能结构 6 1.3.3 业务逻辑编码规则 7 1.3.4 系统流程图 8 1.3.5 构建开发环境 8 1.3.6 系统预览 9 1.3.7 文件夹组织结构 10 1.4 数据库设计 10 1.4.1 数据库分析 10 1.4.2 进销存管理系统的E-R图 11 1.4.3 使用PowerDesigner建模 12 1.4.4 创建数据库 15 1.5 主窗体设计 16 1.5.1 创建主窗体 17 1.5.2 创建导航面板 18 1.6 公共模块设计 21 1.6.1 编写Dao公共类 22 1.6.2 编写Item类 25 1.7 基础信息模块设计 26 1.7.1 基础信息模块概述 26 1.7.2 基础信息模块技术分析 27 1.7.3 供应商添加实现过程 27 1.7.4 供应商修改与删除实现过程 30 1.7.5 单元测试 32 1.8 进货管理模块设计 36 1.8.1 进货管理模块概述 36 1.8.2 进货管理模块技术分析 38 1.8.3 进货单实现过程 38 1.9 查询统计模块设计 42 1.9.1 查询统计模块概述 42 1.9.2 查询统计模块技术分析 43 1.9.3 销售查询实现过程 43 1.10 库存管理模块设计 45 1.10.1 库存管理模块概述 45 1.10.2 库存管理模块技术分析 46 1.10.3 价格调整实现过程 46 1.10.4 单元测试 48 1.11 系统打包发布 49 1.12 开发技巧与难点分析 51 1.13 使用PowerDesigner逆向生成数据库 E-R图 52 1.14 本章总结 54 第2章 企业内部通信系统(Swing+JavaDB 实现) 55 教学视频:1小时40分 2.1 开发背景 56 2.2 系统分析 56 2.2.1 需求分析 56 2.2.2 可行性分析 56 2.2.3 编写项目计划书 58 2.3 系统设计 60 2.3.1 系统目标 60 2.3.2 系统功能结构 60 2.3.3 数据库设计 60 2.3.4 系统预览 62 2.3.5 文件夹组织结构 63 2.4 主窗体设计 64 2.4.1 创建主窗体 64 2.4.2 记录窗体位置 68 2.5 公共模块设计 69 2.5.1 数据库操作类 69 2.5.2 系统工具类 74 2.6 系统托盘模块设计 79 2.6.1 系统托盘模块概述 79 2.6.2 系统托盘模块技术分析 79 2.6.3 系统托盘模块实现过程 80 2.7 系统工具模块设计 82 2.7.1 系统工具模块概述 82 2.7.2 系统工具模块技术分析 82 2.7.3 系统工具模块实现过程 83 2.8 用户管理模块设计 87 2.8.1 用户管理模块概述 87 2.8.2 用户管理模块技术分析 87 2.8.3 用户管理模块实现过程 88 2.8.4 单元测试 93 2.9 通信模块设计 94 2.9.1 通信模块概述 94 2.9.2 通信模块技术分析 95 2.9.3 通信模块实现过程 95 2.10 开发技巧与难点分析 99 2.11 使用JDK 6新增的系统托盘 99 2.12 本章总结 100 第3章 企业人事管理系统 (Swing+Hibernate+Oracle实现) 101 教学视频:2小时53分 3.1 开发背景 102 3.2 系统分析 102 3.3 系统设计 102 3.3.1 系统目标 102 3.3.2 系统功能结构 102 3.3.3 系统预览 104 3.3.4 业务流程图 105 3.3.5 文件夹结构设计 106 3.4 数据库设计 107 3.4.1 数据库分析 107 3.4.2 数据库概念设计 107 3.4.3 数据库逻辑结构设计 109 3.5 主窗体设计 110 3.5.1 导航栏的设计 110 3.5.2 工具栏的设计 112 3.6 公共模块设计 114 3.6.1 编写Hibernate配置文件 114 3.6.2 编写Hibernate持久化类和映射文件 115 3.6.3 编写通过Hibernate操作持久化对象的 常用方法 116 3.6.4 创建用于特殊效果的部门树对话框 117 3.6.5 创建通过部门树选取员工的面板和 对话框 119 3.7 人事管理模块设计 120 3.7.1 人事管理模块功能概述 120 3.7.2 人事管理模块技术分析 122 3.7.3 人事管理模块实现过程 122 3.7.4 单元测试 127 3.8 待遇管理模块设计 128 3.8.1 待遇管理模块功能概述 128 3.8.2 待遇管理模块技术分析 129 3.8.3 待遇管理模块实现过程 129 3.9 系统维护模块设计 133 3.9.1 系统维护模块功能概述 134 3.9.2 系统维护模块技术分析 136 3.9.3 系统维护模块实现过程 136 3.9.4 单元测试 140 3.10 开发技巧与难点分析 140 3.11 Hibernate关联关系的建立方法 141 3.11.1 建立一对一关联 141 3.11.2 建立一对多关联 142 3.12 本章总结 144 第4章 酒店管理系统(Swing+SQL Server 2005实现) 145 教学视频:2小时39分 4.1 概述 146 4.2 系统分析 146 4.3 系统设计 146 4.3.1 系统目标 146 4.3.2 系统功能结构 147 4.3.3 系统预览 147 4.3.4 业务流程图 149 4.3.5 文件夹结构设计 149 4.4 数据库设计 150 4.4.1 数据库分析 150 4.4.2 数据库概念设计 150 4.4.3 数据库逻辑结构设计 151 4.4.4 视图设计 151 4.5 公共模块设计 152 4.5.1 编写数据库连接类 152 4.5.2 封装常用的操作数据库的方法 153 4.5.3 自定义表格组件 154 4.5.4 编写利用正则表达式验证数据 合法性的方法 156 4.6 主窗体设计 156 4.7 用户登录窗口设计 158 4.8 开台签单工作区设计 164 4.8.1 开台签单工作区功能概述 164 4.8.2 开台签单工作区技术分析 165 4.8.3 开台签单工作区实现过程 165 4.8.4 单元测试 170 4.9 自动结账工作区设计 171 4.9.1 自动结账工作区功能概述 171 4.9.2 自动结账工作区技术分析 172 4.9.3 自动结账工作区实现过程 172 4.10 结账报表工作区设计 173 4.10.1 结账报表工作区功能概述 173 4.10.2 结账报表工作区技术分析 175 4.10.3 结账报表工作区实现过程 175 4.10.4 单元测试 179 4.11 后台管理工作区设计 180 4.11.1 后台管理工作区功能概述 180 4.11.2 后台管理工作区技术分析 181 4.11.3 后台管理工作区实现过程 181 4.11.4 单元测试 188 4.12 开发技巧与难点分析 188 4.13 使用Visio逆向生成数据库E-R图 190 4.14 本章总结 192 第5章 图书馆管理系统(Swing+SQL Server 2000实现) 193 教学视频:2小时14分 5.1 开发背景 194 5.2 需求分析 194 5.3 系统设计 194 5.3.1 系统目标 194 5.3.2 系统功能结构 194 5.3.3 系统流程图 195 5.3.4 系统预览 196 5.3.5 构建开发环境 196 5.3.6 文件夹组织结构 197 5.4 数据库设计 197 5.4.1 数据库分析 197 5.4.2 数据库概念设计 197 5.4.3 使用PowerDesigner建模 200 5.5 公共模块设计 201 5.5.1 数据库连接及操作类的编写 201 5.5.2 MenuActions类的编写 203 5.5.3 限制文本框长度类的编写 205 5.5.4 描述组合框索引与内容类的编写 206 5.5.5 在JLable上添加图片类的编写 208 5.6 主窗体设计 208 5.6.1 主窗体概述 208 5.6.2 主窗体技术分析 209 5.6.3 主窗体的实现过程 211 5.7 登录模块设计 214 5.7.1 登录模块概述 214 5.7.2 登录模块技术分析 215 5.7.3 登录模块实现过程 216 5.8 图书信息管理模块设计 219 5.8.1 图书信息管理模块概述 219 5.8.2 图书信息管理模块技术分析 221 5.8.3 图书信息管理模块实现过程 221 5.8.4 单元测试 229 5.9 图书借阅、归还模块设计 230 5.9.1 图书借阅、归还模块概述 230 5.9.2 图书借阅、归还模块技术分析 231 5.9.3 图书借阅、归还模块实现过程 232 5.9.4 单元测试 238 5.10 图书查询模块设计 239 5.10.1 图书查询模块概述 239 5.10.2 图书查询模块技术分析 239 5.10.3 图书查询模块实现过程 240 5.11 开发技巧与难点分析 242 5.11.1 级联删除 242 5.11.2 窗体中单选按钮即时显示 243 5.12 格式化的文本框 243 5.12.1 使用JFormattedTextField限制整型 数字输入 244 5.12.2 使用JFormattedTextField限制日期 输入 244 5.13 本章总结 245 第6章 企业快信(Swing+JavaDB实现) 246 教学视频:1小时35分 6.1 企业快信概述 247 6.2 系统分析 247 6.2.1 需求分析 247 6.2.2 可行性研究 247 6.3 系统设计 248 6.3.1 系统目标 248 6.3.2 系统功能结构 248 6.3.3 业务流程图 248 6.3.4 系统预览 249 6.3.5 构建开发环境 251 6.3.6 文件夹组织结构 252 6.4 数据库设计 253 6.4.1 数据库分析 253 6.4.2 数据库概念设计 253 6.4.3 数据库逻辑结构设计 254 6.4.4 视图设计 255 6.5 主窗体设计 255 6.6 公共模块设计 258 6.6.1 编写数据库连接类 258 6.6.2 封装常用的操作数据库的方法 260 6.7 资源管理模块设计 261 6.7.1 名片夹管理功能概述 261 6.7.2 名片夹管理功能技术分析 262 6.7.3 名片夹管理功能实现过程 262 6.8 发送短信模块设计 270 6.8.1 发送短信模块功能概述 270 6.8.2 发送短信模块技术分析 271 6.8.3 发送短信模块实现过程 272 6.9 发送邮件模块设计 276 6.9.1 发送邮件模块功能概述 276 6.9.2 发送邮件模块技术分析 277 6.9.3 发送邮件模块实现过程 277 6.10 系统设置模块设计 282 6.10.1 系统设置模块功能概述 282 6.10.2 系统设置模块技术分析 283 6.10.3 短信设置实现过程 283 6.10.4 邮箱设置实现过程 285 6.11 开发技巧与难点分析 287 6.12 使用短信猫和Java Mail组件 288 6.12.1 使用短信猫 288 6.12.2 使用Java Mail组件 290 6.13 本章总结 295 第7章 欣想电子商城(Spring+Hibernate +SQL Server实现) 296 教学视频:1小时53分 7.1 开发背景 297 7.2 系统分析 297 7.2.1 需求分析 297 7.2.2 可行性分析 297 7.3 系统设计 298 7.3.1 系统目标 298 7.3.2 系统功能结构 298 7.3.3 购物流程图 299 7.3.4 系统预览 300 7.3.5 构建开发环境 301 7.3.6 文件夹组织结构 304 7.4 数据库设计 304 7.4.1 数据库分析 305 7.4.2 数据库概念设计 305 7.4.3 PowerDesigner数据库建模 306 7.4.4 数据库创建 307 7.5 网站首页设计 308 7.5.1 首页布局 308 7.5.2 创建首页控制器 311 7.5.3 配置控制器 312 7.6 公共模块设计 314 7.6.1 编写Dao公共类 314 7.6.2 配置数据库连接和事务管理器 316 7.6.3 配置Spring控制器的请求映射 317 7.7 会员管理模块设计 319 7.7.1 会员管理模块概述 319 7.7.2 会员管理模块技术分析 320 7.7.3 会员注册的实现过程 321 7.7.4 会员登录的实现过程 324 7.8 购物模块设计 327 7.8.1 购物模块概述 327 7.8.2 购物模块技术分析 328 7.8.3 购物车的实现过程 328 7.8.4 收银台的实现过程 332 7.8.5 单元测试 335 7.9 商品管理模块设计 336 7.9.1 商品管理模块概述 336 7.9.2 商品管理模块技术分析 337 7.9.3 商品列表的实现过程 338 7.9.4 商品添加的实现过程 340 7.9.5 单元测试 343 7.10 发布与运行 344 7.11 开发技巧与难点分析 346 7.11.1 为Spring的数据源配置正确的URL 346 7.11.2 为Tiles指定错误页面 347 7.12 使用MyEclipse生成Hibernate 实体类和映射文件 347 7.13 本章总结 351 第8章 企业门户网站(JSP+JavaBean +SQL Server 2000实现) 352 教学视频:1小时9分 8.1 开发背景 353 8.2 需求分析 353 8.3 系统设计 353 8.3.1 系统目标 353 8.3.2 系统功能结构 354 8.3.3 业务流程图 355 8.3.4 系统预览 355 8.3.5 构建开发环境 356 8.3.6 文件夹组织结构 358 8.4 数据库设计 359 8.4.1 数据库需求分析 359 8.4.2 数据库概念设计 359 8.4.3 数据库逻辑结构设计 360 8.5 公共模块设计 361 8.5.1 定义connsqlserver类 361 8.5.2 创建Web应用过滤器 363 8.5.3 构建码类 365 8.6 网站首页设计 365 8.6.1 首页概述 365 8.6.2 首页技术分析 365 8.6.3 首页的实现过程 367 8.7 商品介绍模块设计 369 8.7.1 商品介绍模块概述 369 8.7.2 商品介绍模块技术分析 369 8.7.3 商品介绍模块实现过程 370 8.8 后台登录模块设计 371 8.8.1 后台登录模块概述 371 8.8.2 后台登录模块技术分析 372 8.8.3 后台登录模块实现过程 373 8.8.4 单元测试 375 8.9 商品管理模块设计 376 8.9.1 商品管理模块概述 376 8.9.2 商品管理模块技术分析 377 8.9.3 商品管理模块实现过程 378 8.9.4 单元测试 388 8.10 新闻管理模块设计 389 8.10.1 新闻管理模块概述 389 8.10.2 新闻管理模块技术分析 389 8.10.3 新闻管理模块实现过程 391 8.11 开发技巧与难点分析 397 8.11.1 页面弹出窗口控制 397 8.11.2 FileUpload组件获取表单中的值 399 8.11.3 配置全局Tomcat连接池 399 8.12 Proxool连接池 400 8.12.1 Proxool安装 400 8.12.2 Proxool使用 400 8.13 本章总结 402 第9章 BBS系统(Struts+MySQL实现) 403 教学视频:1小时46分 9.1 开发背景 404 9.2 需求分析 404 9.3 系统设计 404 9.3.1 系统目标 404 9.3.2 系统功能结构 405 9.3.3 业务流程图 405 9.3.4 系统预览 406 9.3.5 构建开发环境 407 9.3.6 文件夹组织结构 408 9.4 数据库设计 409 9.4.1 数据库分析 409 9.4.2 数据库概念设计 409 9.4.3 PowerDesigner数据库建模 410 9.4.4 创建数据库 411 9.5 论坛首页设计 412 9.5.1 创建首页视图组件 412 9.5.2 创建首页配置文件 416 9.5.3 创建首页控制器 416 9.5.4 创建首页业务逻辑类 417 9.6 公共模块设计 419 9.6.1 数据库连接 419 9.6.2 配置消息资源文件 422 9.6.3 创建码类 423 9.7 用户登录模块设计 424 9.7.1 用户登录概述 424 9.7.2 用户登录技术分析 424 9.7.3 用户登录实现过程 425 9.7.4 单元测试 429 9.8 用户注册模块设计 430 9.8.1 用户注册概述 430 9.8.2 用户注册技术分析 430 9.8.3 用户注册实现过程 430 9.9 用户发布主题模块设计 436 9.9.1 发布主题概述 436 9.9.2 发布主题技术分析 437 9.9.3 发布主题实现过程 437 9.9.4 单元测试 443 9.10 后台栏目管理模块设计 445 9.10.1 栏目管理概述 445 9.10.2 栏目管理技术分析 446 9.10.3 栏目管理实现过程 446 9.11 开发技巧与难点分析 449 9.12 Struts框架与日志 450 9.13 本章总结 452 第10章 手机网络游戏(J2ME+Servlet 实现) 453 教学视频:1小时15分 10.1 开发背景 454 10.2 系统分析 454 10.2.1 需求分析 454 10.2.2 可行性分析 454 10.3 系统设计 454 10.3.1 系统目标 454 10.3.2 系统功能结构 455 10.3.3 构建开发环境(根据语言的实际 情况写) 455 10.3.4 系统预览 456 10.3.5 文件夹组织结构 457 10.4 主程序设计 458 10.5 公共模块设计 462 10.5.1 创建Player公共类 462 10.5.2 创建Queue公共类 463 10.5.3 创建Umpire公共类 465 10.5.4 创建Desk公共类 466 10.6 游戏模块设计 469 10.6.1 游戏模块概述 469 10.6.2 游戏模块技术分析 470 10.6.3 棋盘绘制模块实现过程 470 10.6.4 按键处理模块实现过程 478 10.6.5 游戏信息处理模块实现过程 481 10.6.6 客户端信息处理模块概述 483 10.7 服务器模块设计 484 10.7.1 服务器模块概述 484 10.7.2 服务器模块技术分析 485 10.7.3 服务器模块实现过程 485 10.7.4 单元测试 490 10.8 发布与运行 491 10.8.1 服务器端的发布与运行 491 10.8.2 客户端的运行 493 10.9 开发技巧与难点分析 493 10.10 使用EclipseMe工具编写 手机程序 494 10.10.1 EclipseMe的安装 494 10.10.2 配置EclipseMe插件 495 10.10.3 创建J2ME项目 496 10.11 本章总结 497

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值