首页 > Java > java教程 > 在 Java 中如何限制 JTextField 仅接受数字输入?

在 Java 中如何限制 JTextField 仅接受数字输入?

Linda Hamilton
发布: 2024-12-22 19:05:16
原创
788 人浏览过

How Can I Restrict a JTextField to Accept Only Numeric Input in Java?

在 JTextField 中仅接受数字值

可以通过使用 JFormattedTextField 类来限制 JTextField 仅接受数字值。此类支持使用 Format 对象验证不同的数据类型。

使用 JFormattedTextField 进行数字输入

JFormattedTextField 提供了用于验证数据和提供视觉反馈的灵活解决方案。以下是如何使用它进行数字输入:

NumberFormat integerNumberInstance = NumberFormat.getIntegerInstance();
ImprovedFormattedTextField integerFormattedTextField = new ImprovedFormattedTextField(integerNumberInstance, 100);
登录后复制

在此示例中:

  • integerNumberInstance 是专门用于整数的 NumberFormat 对象。
  • ImprovedFormattedTextField 是一个扩展 JFormattedTextField 的自定义 JTextField,提供增强的

用于完整解析的自定义格式化程序

为了确保只接受完整的数值,我们可以使用 ParseAllFormat 类作为格式的装饰器object:

final Format format = new ParseAllFormat(integerNumberInstance);
登录后复制

此包装格式确保如果输入部分数值,则该值将是被拒绝。

ImprovedFormattedTextField 的其他功能

ImprovedFormattedTextField 类提供了几个附加功能:

  • 视觉反馈:提供背景和前景色变化以指示有效和无效输入。
  • 插入符号位置:输入值后更正插入符号位置以维护用户体验。
  • 按键绑定覆盖:禁止不必要的操作,例如使用 ENTER

用法示例

要将数字输入功能合并到 GUI 中:

JPanel panel = new JPanel(new BorderLayout());
panel.add(integerFormattedTextField, BorderLayout.WEST);

JButton button = new JButton(new AbstractAction() {
    {
        integerFormattedTextField.addPropertyChangeListener("editValid", event -> setEnabled((Boolean) event.getNewValue()));
        putValue(Action.NAME, "Show Current Value");
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "The current value is [" + integerFormattedTextField.getValue() + "]");
    }
});
登录后复制

此设置初始化数字文本领域具有改进的行为。该按钮显示值,并且仅在输入有效时才启用。

以上是在 Java 中如何限制 JTextField 仅接受数字输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板