Java 如果jTextField为空,如何为其设置默认值

Java 如果jTextField为空,如何为其设置默认值,java,netbeans,null,jtextfield,Java,Netbeans,Null,Jtextfield,如何在Netbeans中创建一个简单的利率计算器,如果利率文本字段为空,则利率自动设置为8.5,类似时间为1年?至少有两种情况需要关注 没有输入任何内容 输入了一个非数字 您还有两种不同的字段类型 兴趣:十进制类型(例如浮点) 年份:整数类型(例如int) 我已经编写了一些帮助函数来帮助解析“空白”值。这些助手函数是解决方案,但下面提供了一个可运行的示例 // Parses a JTextField for a float public static float parseFloat(JText

如何在Netbeans中创建一个简单的利率计算器,如果利率文本字段为空,则利率自动设置为8.5,类似时间为1年?

至少有两种情况需要关注

  • 没有输入任何内容
  • 输入了一个非数字
  • 您还有两种不同的字段类型

  • 兴趣:十进制类型(例如
    浮点
  • 年份:整数类型(例如
    int
  • 我已经编写了一些帮助函数来帮助解析“空白”值。这些助手函数是解决方案,但下面提供了一个可运行的示例

    // Parses a JTextField for a float
    public static float parseFloat(JTextField f, float defaultVal, float failureVal) {
        if (f == null || f.getText().trim().isEmpty()) {
            return defaultVal;
        } else {
            try {
                return Float.parseFloat(f.getText());
            } catch (NumberFormatException e) {
                return failureVal;
            }
        }
    }
    
    // Parses a JTextField for an integer
    public static int parseInt(JTextField f, int defaultVal, int failureVal) {
            if (f == null || f.getText().trim().isEmpty()) {
                return defaultVal;
            } else {
                try {
                    return Integer.parseInt(f.getText());
                } catch (NumberFormatException e) {
                    return failureVal;
                }
            }
    }
    
    这些函数都是不言自明的,但其目的是允许感兴趣的“默认”值
    8.5
    ,以及错误值,以防您发现此问题并警告用户

    要使用这些函数,只需使用所有三个参数调用它们:

    System.out.println(parseFloat(rateField, 8.5f, 8.5f));
    System.out.println(parseFloat(yearField, 1, 1));
    
    年份输入处理与利息输入处理相同,只是Java使用显式数字类型,因此它是一个复制粘贴,将
    float
    更改为
    int

    以下是完整的工作示例:

    import javax.swing.*;
    import java.awt.*;
    
    public class Main {
        public static void main(String ... args) {
            JLabel rateLabel = new JLabel("Rate:");
            JTextField rateField = new JTextField(10);
    
            JLabel yearLabel = new JLabel("Year:");
            JTextField yearField = new JTextField(10);
    
            // Use modal to wait for user input for proof of concept
            JDialog dialog = new JDialog();
            dialog.setModal(true);
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setLayout(new FlowLayout());
            dialog.getContentPane().add(rateLabel);
            dialog.getContentPane().add(rateField);
            dialog.getContentPane().add(yearLabel);
            dialog.getContentPane().add(yearField);
            dialog.pack();
    
            dialog.setVisible(true);
    
            float rateValue = parseFloat(rateField, 8.5f, 8.5f);
            int yearValue = parseInt(yearField, 1, 1);
    
            JOptionPane.showMessageDialog(null, rateLabel.getText() + rateValue);
            JOptionPane.showMessageDialog(null, yearLabel.getText() + yearValue);
    
        }
    
        // Parses a JTextField for a float
        public static float parseFloat(JTextField f, float defaultVal, float failureVal) {
            if (f == null || f.getText().trim().isEmpty()) {
                return defaultVal;
            } else {
                try {
                    return Float.parseFloat(f.getText());
                } catch (NumberFormatException e) {
                    return failureVal;
                }
            }
        }
    
        // Parses a JTextField for an integer
        public static int parseInt(JTextField f, int defaultVal, int failureVal) {
                if (f == null || f.getText().trim().isEmpty()) {
                    return defaultVal;
                } else {
                    try {
                        return Integer.parseInt(f.getText());
                    } catch (NumberFormatException e) {
                        return failureVal;
                    }
                }
        }
    }
    

    你已经回答了你自己的问题<代码>如果费率文本字段为空做点什么。我不明白-camickr