`
joyo_fly
  • 浏览: 87012 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

JFormattedTextField

阅读更多

 

   JFormattedTextField在JTextField基础上增加了formatter和一个value对象。formatter可以将value转换成显示的文本,或把文本转换成value。

   1、创建和初始化

   rateField = new JFormattedTextField(percentFormat);
   rateField.setValue(new Double(rate));
   rateField.setColumns(10);
   rateField.addPropertyChangeListener("value", this);
   numPeriodsField = new JFormattedTextField();
   numPeriodsField.setValue(new Integer(numPeriods));
   numPeriodsField.setColumns(10);
   numPeriodsField.addPropertyChangeListener("value", this);
   paymentField = new JFormattedTextField(paymentFormat);
   paymentField.setValue(new Double(payment));
   paymentField.setColumns(10);
   aymentField.setEditable(false);
   paymentField.setForeground(Color.red);
   ...
   percentFormat = NumberFormat.getNumberInstance();
   percentFormat.setMinimumFractionDigits(2);
   paymentFormat = NumberFormat.getCurrencyInstance();

   以上的构造器中的使用的参数是java.text.Format,formatter使用该对象进行value和text间的转换。numPeriodsField使用一个无参的构造器,因为默认formatter会处理Integer型对象的格式化工作,但不使用于浮点型的对象。

   2、设置和获得value

   注意:FormattedText的value和text是两种不同的属性,而且value继text后产生。text就是文本框中实时显示的内容,所以value不一定会立刻反映最新的text值,而且在text的变化提交前,value值不会变化。

   设置value值有两种方法:setValue或commitEdit。

   commitEdit方法在两种情况下会被自动调用:

   (1)用户在文本框中回车;

   (2)文本框失去焦点。可以通过调用setFocusLostBehavior设置不同的结果。

    当调用setValue方法后,value值会变成指定值,同时text会随之变化;不主张调用setText方法,因为通过该方法,text将会变化,但这个变化不会反应到value,导致text和value得不一致。

   3、定制format

   可以通过调用工厂类DateFormat或NumberFormat相关方法获得Format对象,或者通过实例化SimpleDateFormat获得。Formatters使用这些format对象完成value和text的转变,这些formatter一般都是InternationalFormatter的子类(除MaskFormatter外),如DateFormatter、NumberFormatter。

   4、使用MaskFormatter

   该formatter能严格明确文本框的某个位置哪些字符有效。

   zipField = new JFormattedTextField(
                    createFormatter("#####"));
...
protected MaskFormatter createFormatter(String s) {
    MaskFormatter formatter = null;
    try {
        formatter = new MaskFormatter(s);
    } catch (java.text.ParseException exc) {
        System.err.println("formatter is bad: " + exc.getMessage());
        System.exit(-1);
    }
    return formatter;
}

Character  Description
# Any valid number (Character.isDigit ).
'
(single quote)
Escape character, used to escape any of the special formatting characters.
U Any character (Character.isLetter ). All lowercase letters are mapped to uppercase.
L Any character (Character.isLetter ). All uppercase letters are mapped to lowercase.
A Any character or number (Character.isLetter or Character.isDigit ).
? Any character (Character.isLetter ).
* Anything.
H Any hex character (0-9, a-f or A-F).

    5、定制formatter和使用formatter工厂

    使用formatter时牢记formater最好和JFormattedTextField一一关联。可以通过以下方式设置JFormattedTextField使用的formatter:

    (1)使用JFormattedTextField带Format参数的构造函数;

    (2)使用JFormattedTextField带JFormattedTextField.AbstractFormatter参数的构造函数;

    (3)对一个尚且没有设置format、formatter、formatterFactory的JFormattedTextField调用setValue方法,然后根据value的类型由默认的format factory给该文本框分配一个合适的formatter。

    (4)为JFormattedTextField设置formatter factory,可以通过构造器或setFormatterFactory,由该factory返回相应的formatter,这种方式最灵活。

 

分享到:
评论

相关推荐

    java swing-JFormattedTextField的使用

    JFormattedTextField是Swing库提供的一个带有格式的文本输入框组件。它允许用户输入特定格式的数据,例如日期、时间、货币等,并在用户输入时进行格式验证。

    AutoText:Java Swing 库,允许将自动完成的可能性添加到文本组件(JTextComponent - JTextField - JFormattedTextField 等)

    自动文本 Java Swing 库,允许将自动完成的可能性添加到文本组件(JTextComponent - JTextField - JFormattedTextField 等)

    Swing组件下载(常用组件)

    格式化字段:JFormattedTextField 口令字段:JPasswordField Spinner:JSpinner 分隔符:JSeparator 文本窗格:JTextPane 编辑器窗格:JEditorPane 树:JTree 表:JTable 菜单栏:JMenuBar 菜单:JMenu 菜单项:...

    Java Swing 第三版 英文

    ·新增了讲解JFormattedTextField和输入验证的章节 ·Mac OS X的编程介绍和范例 ·SDK 1.4引入的输入焦点系统 ·可插拔的外观风格 ·SDK 1.4引入的新布局管理器SpringLayout ·总结每个组件重要功能的属性列表 ·SDK...

    JAVA项目开发全程实录(含电子书和所有源代码)

    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 可行性研究 ...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 ...学生提问:当我们使用编译C程序时,不仅需要指定存放...

    javaSE代码实例

    第一篇 起步篇 第1章 初识Java 3 1.1 Java简介 3 1.1.1 Java的不同平台 3 1.1.2 Java发展的历程 3 1.1.3 Java的特点 4 1.2 安装开发工具包 5 1.2.1 下载JDK 5 1.2.2 安装JDK 6 ...

    Swing toolkit X access table of database-开源

    “Swing toolkit to access a database of a table” 该项目提供了屏幕上的一些组件(JFormattedTextField、JComboBox、JRadioButton、JcheckBox和JtextArea)与数据库表的字段之间的数据绑定机制。 该项目的目的:...

    SimpleDateComponent

    这是JFormattedTextField的简单扩展。 test.DateTextFieldTest.java是演示MyDateTextField用法的测试应用程序。 此日期部分的主要目的: 让用户仅在其其他表单字段的后面键入日期。 无需使用鼠标。 让用户只输入日...

    whs-gui-prak:GUI 编程实习 WS 1415 - 威斯特伐利亚大学

    通过带有 NumberFormatter 的 jFormattedTextField 读入年份,并通过基于年份的 JSpinner 读入存储期。任务 5 MDI 文件,带有用于葡萄酒入场的表格窗口。 和功能菜单项。练习 6 练习 5 中的应用程序

Global site tag (gtag.js) - Google Analytics