即使JFormattedTextField实现DecimalFormat和NumberFormat ,也会使用DocumentListener ,

1)通过使用DecimalFormat或NumberFormat简单的User-non-Acceptable通过实现setMinimum()和setMaximum()

2) JTextComponents在默认情况下实现插入文本,然后通过实现setMinimum()和setMaximum()来实现具有DecimalFormat或NumberFormat的JFormattedTextField User-non-Acceptable的任何解决方法。

3)它非常舒适的使用DocumentListener允许添加任何数量,但突出显示范围

4)或与SpinnerNumberModel使用JSpinner ,可以将Formatter设置为Number Instance

例如将InternationalFormatter和DocumentListener结合在一起

import java.awt.*; import java.awt.font.TextAttribute; import java.math.*; import java.text.*; import java.util.Map; import javax.swing.*; import javax.swing.JFormattedTextField.*; import javax.swing.event.*; import javax.swing.text.InternationalFormatter; public class DocumentListenerAdapter { public static void main(String args[]) { JFrame frame = new JFrame("AbstractTextField Test"); final JFormattedTextField textField1 = new JFormattedTextField(new Float(10.01)); textField1.setFormatterFactory(new AbstractFormatterFactory() { @Override public AbstractFormatter getFormatter(JFormattedTextField tf) { NumberFormat format = DecimalFormat.getInstance(); format.setMinimumFractionDigits(2); format.setMaximumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); InternationalFormatter formatter = new InternationalFormatter(format); formatter.setAllowsInvalid(false); formatter.setMinimum(0.0); formatter.setMaximum(1000.00); return formatter; } }); final Map attributes = (new Font("Serif", Font.BOLD, 16)).getAttributes(); attributes.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON); final JFormattedTextField textField2 = new JFormattedTextField(new Float(10.01)); textField2.setFormatterFactory(new AbstractFormatterFactory() { @Override public AbstractFormatter getFormatter(JFormattedTextField tf) { NumberFormat format = DecimalFormat.getInstance(); format.setMinimumFractionDigits(2); format.setMaximumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); InternationalFormatter formatter = new InternationalFormatter(format); formatter.setAllowsInvalid(false); //formatter.setMinimum(0.0); //formatter.setMaximum(1000.00); return formatter; } }); textField2.getDocument().addDocumentListener(new DocumentListener() { @Override public void changedUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } @Override public void insertUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } @Override public void removeUpdate(DocumentEvent documentEvent) { printIt(documentEvent); } private void printIt(DocumentEvent documentEvent) { DocumentEvent.EventType type = documentEvent.getType(); double t1a1 = (((Number) textField2.getValue()).doubleValue()); if (t1a1 > 1000) { Runnable doRun = new Runnable() { @Override public void run() { textField2.setFont(new Font(attributes)); textField2.setForeground(Color.red); } }; SwingUtilities.invokeLater(doRun); } else { Runnable doRun = new Runnable() { @Override public void run() { textField2.setFont(new Font("Serif", Font.BOLD, 16)); textField2.setForeground(Color.black); } }; SwingUtilities.invokeLater(doRun); } } }); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(textField1, BorderLayout.NORTH); frame.add(textField2, BorderLayout.SOUTH); frame.setVisible(true); frame.pack(); } private DocumentListenerAdapter() { } }

java保存数字_Java:JFormattedTextField保存数字相关推荐

  1. java整数翻转_Java程序反转数字

    Java程序反转数字 在此程序中,您将学习在Java中使用while循环和for循环来反转数字. 示例:在Java中使用while循环反转数字 public class ReverseNumber { ...

  2. java金字塔显示_java控制台输出数字金字塔示例分享

    /*Java *Author: NealFeng at oschina.net *License: GPLv2+ *Time: 2014/1/17 * *在控制台输出数字金字塔: *          ...

  3. java怎么系统输入数字_java怎么输入数字,这些经验不可多得

    相对于其它语言的输入输出,Java的显得有点繁琐了,这一点对于初学java的朋友尤为明显.那么这里分享下Java输入数字的方法. 工具/材料 eclipse 操作方法 01 java的Scanner类 ...

  4. java 时间 转化成数字_java时间转化数字

    1 写出下面代码输出内容. package main import (    "fmt" ) funcmain() {     defer_call() } funcdefer_c ...

  5. java 保存 设置_java的保存按钮怎么设置?

    java的保存按钮怎么设置? 关注:291  答案:2  mip版 解决时间 2021-01-30 12:03 提问者我不想放过你 2021-01-29 13:34 不要用java.swing中的类 ...

  6. java 获得唯一 数字_java生成唯一数字

    java生成唯一数字 用UUID类生成唯一标识的时候,会生成一个十六进制的整数,但是不能作为数据库long型字段的唯一标识,用下面的办法可以实现数据库long型标识的生成: public class ...

  7. java 液晶屏数字_java实现液晶数字字体显示当前时间

    本文实例为大家分享了java实现液晶数字字体显示当前时间的具体代码,供大家参考,具体内容如下 import java.text.SimpleDateFormat; import java.util.D ...

  8. java字符转数字_Java字符串和数字间的转换

    title: Java字符串和数字间的转换 date: 2016-04-23 23:06:50 categories: Java tags: Java 一.字符串转数字 1.通过基本类型对应的包装类则 ...

  9. java打印一些数字_java – 如何打印数字模式

    所以我完成了这个任务: (显示模式)编写一种方法来显示模式,如下所示: 方法标题是: public static void displayPattern(int n) 基本上,我理解"如何& ...

  10. java split 数字_java 怎样分割数字和汉字

    展开全部 用正则表达式来实现:import java.util.regex.Matcher; import java.util.regex.Pattern; public class BB { pub ...

最新文章

  1. 操作系统安全加固的作用
  2. ajax通讯原理,ajax通讯原理以及自己封装一个ajax函数
  3. <关于并发框架>Java原生线程池原理及Guava与之的补充
  4. JavaScript的DOM操作-重点部分-第一部分
  5. 利用MATLAB求数列的和与连乘
  6. 对拉格朗日乘子法与KKT的理解
  7. 科研实习 | 北京大学计算机系林亦波老师芯片设计软件组招收实习生
  8. javascript数据结构-栈
  9. Swift 的函数和闭包
  10. centos6.5卸载java,CentOS 5.2卸载自带Java1.4.2 安装JDK6
  11. Java生成.jar库
  12. python安装scrapy教程_Python实用工具包Scrapy安装教程
  13. WPF中监听剪贴板存在的Bug:OpenClipboard HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN))错误
  14. linux系统苹果刷机,iPhone上安装Android系统详细步骤
  15. 仿写京东登录页面HTML/CSS
  16. 输出今天日期,以yyyy-mm-dd方式输出
  17. charles问题?chls.pro/ssl证书安装后还是出现unknown问题?
  18. HEGERLS供应定做层板仓储货架 防腐防锈库房立体层板货架
  19. UEFI开发与调试--edk2中的基础组件
  20. JS_强制类型转换_Number

热门文章

  1. frpfile官方最新绕id工具_【IPFS动态】IPFS官方周报第104期:Chromium增加了对IPFS的支持!...
  2. 启明智显分享| 2.4寸旋钮串口屏在健身器材上的应用
  3. Android防火墙原型系统设计,Android系统网络安全性研究及防火墙设计
  4. js 实现2的n次方计算函数_「计算机组成原理」:一文快速了解计算机原理知识点-附思维导图...
  5. 鸿蒙可以安装荣耀play,荣耀play3是鸿蒙系统吗
  6. require与include+php,PHP中include与require有什么区别
  7. python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)
  8. 《转》探讨:3D透视投影变换详解-兼谈视平面和屏幕的宽高比问题
  9. 007-流程控制 if 语句
  10. CocosCreator内置函数实现物体拖动