Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 445|回复: 0

[Java基础知识]创建接受格式化文本的输入域

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 15:02:13 | 显示全部楼层 |阅读模式
    1.    Swing 组件: JFormattedTextField。虽然 JFormattedTextField 组件看起来与JTextField 相似,在最简单的情况下,您可以为电话号码提供一个类似“(###)###-####”的输入掩码,它不会接受任何不遵循那个格式的输入。在较为复杂的情况下,既有显示格式化器,也有输入格式化器。例如: 编辑时,缺省日期格式化器允许根据光标的位置在可用的月或日之间滚动。

    2.                     

    3.     当使用 JFormattedTextField 时,可接受的输入或者由掩码明确指定,或者由组件的一个值指定。在后一种情况下,组件用工厂(Factory)设计模式来查找指定值类的缺省格式化器。DefaultFormatterFactory 组件提供预先安装的日期、数字、java.text.Format 子类的格式化器以及其他一切包罗万象的格式化器。

    4.                     
    5. 让我们看看如何使用组件。

    6.                     

    7.                     配置可接受的输入

    8.                     

    9.    屏蔽输入一般是通过使用 MaskFormatter 类的一个实例配置的。在javax.swing.text包中发现,MaskFormatter 通过使用一系列字符指定可接受的输入来工作。该系列8个字符中的每一个都代表输入中的一个字符,下面的列表指出了这一点:                     
    复制代码

      
      # 一个数字
    ? 一个字母
    A 一个字母或数字
    * 任意字符
    U 一个字母,小写字符映射到与它们等效的大写字符上
    L 一个字母,大写字符映射到与它们等效的小写字符上
    H 一个十六进制数字(A-F、a-f、0-9)
    " 用来转义另外一个掩码字符



    除了 MaskFormatter 之外,您还可以用来自 java.text 软件包的 DateFormat 和 NumberFormat 类指定输入格式。清单 1 显示了一些可能的格式。

    清单 1. 定义输入掩码

    // 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("(###) ###-####");



    一旦您指定了输入格式,您随后就要将格式化器传入 JFormattedTextField 构造器中,如下所示:

    JFormattedTextField ftf1 = new JFormattedTextField(df);


         还有其它一些可配置的选项,它们取决于您使用的格式化器。例如:用 MaskFormatter,您能用 setPlaceholderCharacter(char) 设置占位符字符。另外,对于日期域,如果您将域初始化为某个值使一个用户知道什么样的输入格式是可接受的,这样将会有所帮助。


    全部组合在一起
    清单 2. JFormattedTextField 示例
    1. import java.awt.*;
    2. import javax.swing.*;
    3. import javax.swing.text.*;
    4. import java.util.*;
    5. import java.text.*;
    6. public class FormattedSample {
    7. public static void main (String args[]) throws ParseException {
    8.    JFrame f = new JFrame("JFormattedTextField Sample");
    9.    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    10.    Container content = f.getContentPane();
    11.    content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS));
    12.    // Four-digit year, followed by month name and day of month,
    13.    // each separated by two dashes (--)
    14.    DateFormat format = new SimpleDateFormat("yyyy--MMMM--dd");
    15.    DateFormatter df = new DateFormatter(format);
    16.    JFormattedTextField ftf1 = new JFormattedTextField(df);
    17.    ftf1.setValue(new Date());
    18.    content.add(ftf1);
    19.    // US Social Security number
    20.    MaskFormatter mf1 = new MaskFormatter("###-##-####");
    21.    mf1.setPlaceholderCharacter("_");
    22.    JFormattedTextField ftf2 = new  JFormattedTextField(mf1);
    23.    content.add(ftf2);
    24.    // US telephone number
    25.    MaskFormatter mf2 = new MaskFormatter("(###) ###-####");
    26.    JFormattedTextField ftf3 = new
    27.    JFormattedTextField(mf2);
    28.    content.add(ftf3);
    29.    f.setSize(300, 100);
    30.    f.setVisible(true);
    31. }
    32. }

    33. 运行结果:
    34. [img]http://img.javaxxz.com/2014/10/1/150212672.gif[/img]
    复制代码


      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/1/150212766.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-5 01:47 , Processed in 0.489109 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表