Java JTextField限制输入数字范围0-999实现

4星 · 超过85%的资源 需积分: 16 24 下载量 185 浏览量 更新于2024-09-19 收藏 2KB TXT 举报
本文档主要讨论了如何在Java Swing编程中实现一个特定功能,即在JTextField(文本字段)中限制用户输入的数字,确保其值在0至999的范围内。首先,我们有两个相关的类:`NumberLenghtLimitedDmtext` 和 `CreateTextField`。 1. `NumberLenghtLimitedDmtext` 类: 这是一个继承自 `PlainDocument` 的自定义文档类,用于限制插入字符串中的字符长度和类型。类的关键方法是 `insertString()`,它在用户尝试插入字符串时进行检查。方法首先检查输入的字符串是否为空,然后计算新插入的字符串与当前文本框内容的总长度。如果总长度小于或等于预设的限制值(在这个例子中是 `limit`,默认为3),则只允许包含数字的字符被插入。通过遍历输入字符串,只保留数字字符,并将其插入到原始文档中。 2. `CreateTextField` 类: 这个类是实际的JTextField实现,它扩展了 `JTextField` 并实现了 `MouseWheelListener` 接口,以便处理鼠标滚轮事件。在 `CreateTextField` 构造函数中,有两个关键行为: - 注册 `NumberLenghtLimitedDmtext` 文档作为此文本框的文档模型,这意味着每次用户键入或剪切/粘贴内容时,都会应用长度限制。 - 设置步长大小(`stepSize`)为1,这可能与鼠标滚轮的滚动有关,但具体细节未给出。 - 初始化工具包对象 `Toolkit`,可能是为了在后续操作中使用系统默认的工具包资源。 这个代码示例提供了在Java Swing中如何创建一个受控的JTextField,用户只能在此范围内输入整数(0-999)。这对于构建用户界面的数字输入框非常有用,可以防止意外的非数字输入或过长的数值。在实际应用中,可以根据需求调整限制范围和实现细节。

改进以下代码,让错误出现三次弹出冻结信息并关闭窗体。denglu.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int count = 0; String inputzh = zhanghu.getText(); boolean bl = true; try { new Mysql(); bl = Mysql.jujle(inputzh); } catch (ClassNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } catch (SQLException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } System.out.println(bl); if (bl) { try { System.out.println(inputzh); new GUI2(inputzh); jf.dispose(); } catch (Exception e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } } else { ImageIcon titleIcon = new ImageIcon("F:\\ATM.png"); JDialog jDialog = new JDialog(jf, "错误", true); jDialog.setSize(400, 200); jDialog.setLocation(575, 400); JTextField jTextField = new JTextField("您的账号和密码输入有误!请重新输入。"); jTextField.setHorizontalAlignment(JTextField.CENTER); jTextField.setEditable(false); jTextField.setSelectedTextColor(Color.black); jDialog.add(jTextField); jDialog.setIconImage(titleIcon.getImage()); jTextField.setVisible(true); jDialog.setVisible(true); count++; if (count == 3) { ImageIcon titleIcon1 = new ImageIcon("F:\\ATM.png"); JDialog jDialog1 = new JDialog(jf, "错误", true); jDialog.setSize(400, 200); jDialog.setLocation(575, 400); JTextField jTextField1 = new JTextField("您的账号已冻结!请联系人工处理。"); jTextField.setHorizontalAlignment(JTextField.CENTER); jTextField.setEditable(false); jTextField.setSelectedTextColor(Color.black); jDialog.add(jTextField1); jDialog.setIconImage(titleIcon1.getImage()); jTextField.setVisible(true); jDialog.setVisible(true); jf.setDefaultCloseOperation(3); System.exit(0); } else { jpl.repaint(); } } } });

2023-05-31 上传