`

JTextField只能输入数字与小数位数的控制

    博客分类:
  • JAVA
 
阅读更多

实现JTextField只能输入数字,并且控制小数的位数与数字的总长度

 

import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.math.BigDecimal;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 * 只能输入数字
 * @author 心星
 */
public class Txtonlynumber {

	public Txtonlynumber() {
		JFrame f = new JFrame("Txtonlynumber");
		Container contentPane = f.getContentPane();
		JTextField salary = new JTextField(50);
		salary.setDocument(new NumOnlyDocument());

		contentPane.add(salary);
		f.pack();
		f.setVisible(true);
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}

	public static void main(String[] args) {
		new Txtonlynumber();

	}

	class NumOnlyDocument extends PlainDocument {
		private static final long serialVersionUID = 1001689415662878505L;
		
		int maxLen;  //最长字符长度
		int decimalLen; //小数位数
		
		public NumOnlyDocument() {
			this(2,13);
		}
		
		public NumOnlyDocument(int newDecimalLen, int newMaxLen) {
			super();
			decimalLen = newDecimalLen;
			maxLen = newMaxLen;
		}
		
		public void insertString(int offset, String inStr, AttributeSet attrSet) 
			throws BadLocationException {
			// 获得输入框有效值
			String numStr = getText(0, offset) + inStr + getText(offset, getLength() - offset);
			System.out.println("inStr===" + inStr + ",offset==" + offset 
				+ ",getLength()=" + getLength() + ",value=" + numStr);
			// 校验字符长度限制
			if (getLength() + inStr.length() > maxLen) {
				return;
			}
			// 校验是否是有效数字
			try {
				new BigDecimal(numStr);
			} catch (NumberFormatException e1) {
				return;
			}
			// 校验小数位数限制
			int indexNum = numStr.indexOf(".");
			if (indexNum > 0) {
				int len = numStr.substring(indexNum + 1).length();
				if (len > decimalLen) {
					return;
				}
			}
			super.insertString(offset, inStr, attrSet);
		}
	}

}

 

 

 

 

分享到:
评论

相关推荐

    java 金额大小写转换器

    这个作业要求我们使用AWT(Abstract Window Toolkit)库来构建用户界面,并实现金额数字与大写汉字之间的相互转换功能。下面将详细介绍如何完成这个任务。 首先,我们需要了解AWT组件的基本用法。AWT是Java提供的...

    java计算器需求报告

    6. 格式化显示:可能需要格式化结果显示,例如限制小数位数或控制负数的显示方式。 流程图对于理解和设计这个程序非常有帮助,它能清晰地展示从用户输入到计算结果的整个过程。在实际开发中,可以使用UML(统一建模...

    java编写的计数器模拟程序

    - 小数点按钮(.):允许输入小数。 - 等号按钮(=):执行当前的计算操作。 #### 三、核心功能实现 1. **事件监听**: - 为每个按钮添加了事件监听器(`ActionListener`),以响应用户的点击操作。 - 通过...

    java实现简单计算器源码

    结果显示时,我们可能希望保留一定的小数位数,可以使用`DecimalFormat`类来格式化输出结果。 9. **主函数与主类**: 所有的组件和逻辑都将被包含在一个主类中,通常命名为`Calculator`。主函数`main(String[] ...

    JAVA编写的计算器

    在输入和显示方面,开发者使用JTextField作为输入框,并通过setHorizontalAlignment(SwingConstants.RIGHT)确保数字和结果始终显示在输入框的右侧。为了控制输出的精度,使用了DecimalFormat类,允许自定义小数点后...

    Java计算器课程设计报告---模拟科学计算器.doc

    4. **小数精度一致**:在实数运算中,确保小数部分的精度保持一致,这需要对浮点数的处理进行精确控制。 设计思路主要包括: 1. **界面设计**:使用Java Swing库创建GUI,包括TextField和Button组件。使用awt的...

    科学计算器程序Java代码.docx

    7. **DecimalFormat**:`DecimalFormat` 是 `java.text` 包下的一个类,用于格式化数字,例如控制小数位数。在这个程序中,`df` 实例用于保留四位小数。 8. **JMenuBar, JMenu, JMenuItem**:这些是构建菜单栏和子...

    Java 简易计算器

    - 结果可能需要进行格式化,例如,限制小数位数,或者在需要时添加逗号分隔符。 5. **错误处理** - 用户可能会输入无效的表达式,如两个操作符连续或者没有操作符。程序需要检测并处理这些情况。 6. **按钮功能...

    Java实现人民币大写+GUI界面

    这个功能有助于避免因数字输入错误引发的潜在问题,因为汉字的大写金额比阿拉伯数字更不容易被篡改。下面我们将深入探讨如何实现这一功能。 首先,我们需要理解人民币大写转换的基本规则。人民币大写的表示方式有...

    java计算器 源码

    Java的DecimalFormat类可以帮助我们控制小数位数、添加千位分隔符等。 8. **程序结构与模块化**: 一个良好的Java计算器项目应该遵循一定的结构,比如将UI部分和业务逻辑部分分离。UI部分负责展示和捕获用户输入,...

    简单的java计算器源码

    - 用于控制数字的显示格式,这里定义为最多显示14位小数。 2. **布尔变量**:`boolean clickable` - 控制按钮是否可以被点击。 3. **数值变量**: - `double memoryd`: 用于存储临时的数值。 - `int memoryi`:...

    Java计算器(附源代码)

    ### 数字输入处理 - 为了处理首次输入“0”后无法再输入其他数字的情况,引入了`command1`变量进行控制。 - 限制每个数字中只能有一个小数点的出现,通过`command2`变量来跟踪当前输入的小数点状态。 ### 遇到的...

    科学计算器程序Java代码.pdf

    4. **DecimalFormat**:这是一个用于格式化数字的类,它允许程序员控制数字的显示方式,如保留小数位数。在代码中,`df = new DecimalFormat("#.####");`设置了格式,使得结果默认保留四位小数。 5. **菜单栏和菜单...

    java计算器程序课程设计报告

    - 数字输入:用户可以通过点击1到9的数字按钮输入数值,0用于补足个位,小数点用于输入小数。 - 混合运算:计算器支持多个数值之间的连续运算,可以进行加、减、乘、除等操作。 2. **设计要求** - 用户友好:...

    Java整形计算器

    这可能涉及到`DecimalFormat`类,用于控制小数位数。 7. **用户交互**:良好的用户交互体验是计算器设计的关键。这包括确保按钮的响应性,错误消息的提示,以及清零和清除历史记录的功能。 8. **设计模式**:虽然...

    用JAVA编写计算器程序(模拟Windows计算器)

    - `int n`:记录小数位数。 - `int nOperation`:记录运算符类型。 - `int nBitsNum`:记录总共输入的位数。 - `boolean alreadyHaveDot`:判断是否已输入小数点。 - `boolean keyAvailable`:判断是否可以继续...

    计算器java源代码

    6. **格式化输出**:在显示计算结果时,你可能需要确保结果的格式正确,例如,对于大数,可能需要使用逗号分隔符,或者在需要时保留小数位数。这可能需要用到`DecimalFormat`类。 7. **布局管理**:为了让计算器...

    java计算器

    2. **格式化显示**:根据输入的数字和运算结果调整小数位数,可能需要使用`DecimalFormat`类进行格式化。 3. **历史记录**:如果包含历史记录功能,需要维护一个操作历史列表,并提供查看和重复上一步操作的功能。 4...

    Java科学计算器程序代码.pdf

    - `DecimalFormat`类用于格式化数字输出,确保结果保留指定的小数位数。在这个例子中,结果保留四位小数。 5. **用户交互**: - 用户输入通过`JTextField`接收,`JButton`用于触发计算。 - `...

    java笔记随机

    - `long`:64位带符号整型,用于存储较大的数字。 - `float`:32位单精度浮点型,适合表示小数。 - `double`:64位双精度浮点型,精度高于`float`。 - `boolean`:表示真假值,只有两个可能的值:`true`和`false...

Global site tag (gtag.js) - Google Analytics