如何在 Java 中的 JTextField 中仅允许浮动

发布于 2024-12-25 02:57:40 字数 139 浏览 1 评论 0原文

我试图在我的程序中添加一个简单的货币转换器工具,但遇到了障碍。有没有一种简单的方法只允许浮点数作为 Java 中 JTextField 的输入。根据我在网上阅读的内容,使用 JFormattedTextField 使用起来很痛苦。我需要创建一个类来进行一些过滤吗?

I am trying to add a simple currency converter tool to my program yet I hit barrier. Is there a simple way of only allowing float numbers as input to a JTextField in Java. From what I have read online, using JFormattedTextField is a pain to use. Would I need to create a class to do some filtering?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

儭儭莪哋寶赑 2025-01-01 02:57:40

JFormattedTextField 应该不会太困难。只需要传入一个格式化程序作为参数,并且应该自行处理。您可以从 java API 获取该信息,该 API 将使用区域设置,如下所示:

new JFormattedTextField(java.text.NumberFormat.getCurrencyInstance());

JFormattedTextField shouldnt be all too dificult. Just need to pass in a Formatter in as a parameter and should take care of itself. you can get that from the java API which would use the region settings like so:

new JFormattedTextField(java.text.NumberFormat.getCurrencyInstance());

伤痕我心 2025-01-01 02:57:40

最好使用 JFormattedTextField

格式化文本字段为开发人员提供了一种指定可在文本字段中键入的有效字符集的方法。具体来说,JFormattedTextField 类向从 JTextField 类继承的功能添加格式化程序和对象值。格式化程序将字段的值转换为它显示的文本,然后将文本转换为字段的值。 查看示例。

It would be better to use JFormattedTextField.

Formatted text fields provide a way for developers to specify the valid set of characters that can be typed in a text field. Specifically, the JFormattedTextField class adds a formatter and an object value to the features inherited from the JTextField class. The formatter translates the field's value into the text it displays, and the text into the field's value. See examples.

木落 2025-01-01 02:57:40

您可以使用 JFormattedTextField,但它会带来非常糟糕的用户体验。最好在输入时丢弃不适当的字符。 DocumentFilter 提供了一种相对(对于 Swing)干净的方法来执行此操作。 (编辑:原始答案链接到我在现已不复存在的博客上写的一个简单示例。)

You can use JFormattedTextField, but it gives a really terrible user experience. Better to discard inappropriate characters as the are entered. DocumentFilter provides a relatively (for Swing) clean way to do this. (Edit: Original answer had links to a trivial example I wrote on my now defunct blog.)

顾铮苏瑾 2025-01-01 02:57:40

我同意 vcetinick 的观点,因为 JFormattedTextField 对于格式化文本输入很有用。

然而,如果你想验证JTextField中输入的值,你可能需要自己实现ActionListener:

public void actionPerformed(ActionEvent evt) {
    JTextField textfield = (JTextField)evt.getSource();
    String strTextValue = textfield.getText();
    try {
        if (strTextValue.equals("")) {
           // Handle empty string
        } else {
           double dValue = Double.parseDouble(strTextValue);
           // Handle valid value
        }
    } catch (Exception e) {
        // Handle invalid value
    }
}

I agree with vcetinick because JFormattedTextField is useful for formatting text input.

However, if you want to verify the value inputted in JTextField, you may need to implement ActionListener yourself:

public void actionPerformed(ActionEvent evt) {
    JTextField textfield = (JTextField)evt.getSource();
    String strTextValue = textfield.getText();
    try {
        if (strTextValue.equals("")) {
           // Handle empty string
        } else {
           double dValue = Double.parseDouble(strTextValue);
           // Handle valid value
        }
    } catch (Exception e) {
        // Handle invalid value
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文