Java 如果JTextField不包含数据,则显示消息对话框

Java 如果JTextField不包含数据,则显示消息对话框,java,exception,exception-handling,jtextfield,Java,Exception,Exception Handling,Jtextfield,我正在写一个体重指数计算器应用程序。当前发生了一个错误,如果我没有在一个字段中输入数据,该错误会导致程序停止工作。例如,“高度”有两个JTextfield,一个是英尺,另一个是英寸。如果我只是在英尺JTextField中输入“6”,在英寸JTextField中不输入任何内容,然后在重量JTextField中输入我的体重,然后单击计算,则它不起作用 我想做的是显示一个消息对话框,如果一个字段不包含数据,则显示“请确保所有字段都已填写” 下面是添加到“计算”按钮的ActionHandler代码 pu

我正在写一个体重指数计算器应用程序。当前发生了一个错误,如果我没有在一个字段中输入数据,该错误会导致程序停止工作。例如,“高度”有两个JTextfield,一个是英尺,另一个是英寸。如果我只是在英尺JTextField中输入“6”,在英寸JTextField中不输入任何内容,然后在重量JTextField中输入我的体重,然后单击计算,则它不起作用

我想做的是显示一个消息对话框,如果一个字段不包含数据,则显示“请确保所有字段都已填写”

下面是添加到“计算”按钮的ActionHandler代码

public void actionPerformed(ActionEvent e) {
    double heightFT = ((Double.parseDouble(heightFt_TF.getText()));
    double heightIn = (Double.parseDouble(heightIn_TF.getText()));
    double weight = (Double.parseDouble(weight_TF.getText()));
    double totalHeight = (heightFT*12) + heightIn;              
            
    BMI = (weight / (totalHeight*totalHeight)) * 703;
    String s = BMI+"";
    s = s.substring(0,4);
    BMI_TF.setText(s);                              
}

解决了的
我现在已经解决了这个问题。我所做的是在方法中添加“throws NumberFormatException”,并尝试捕获。在try代码块中,我编写了输入所有数据字段时要执行的代码。在catch子句中,我编写了使用NumberFormatException的代码,并简单地显示带有错误消息的消息对话框。现在,如果未输入一个字段,将显示消息对话框

只需检查JTextField对象是否包含文本。 例如:


当然,您还必须确保文本字段的内容确实包含一个数字。

下载apachecommons Lang库,并使用
StringUtils.isBlank(myTextField.getText())以验证字段

public boolean validateFields() {
    if (StringUtils.isBlank(heightFt_TF.getText()) {
        // show message
        return false;
    }

    if (StringUtils.isBlank(weight_TF.getText()) {
        // show message
        return false;
    }

    return true;
}

只有当validateFields()返回true时才运行计算。

您引用的JTextfields应该被验证(不是空的,不是空的,不是数字)Matthias,我尝试了这个方法,但得到了以下错误:线程“AWT-EventQueue-0”java.lang.NumberFormatException中的异常:空字符串
public boolean validate(JTextField field) {

  boolean result = field.getText() != null;
  if (result) {
    try {
      Double.parseDouble(field.getText()));
    } catch(NumberFormatException e) {
      result = false
    } 
  }
  return result;                    
}
public boolean validate(JTextField field) {

  boolean result = field.getText() != null;
  if (result) {
    try {
      Double.parseDouble(field.getText()));
    } catch(NumberFormatException e) {
      result = false
    } 
  }
  return result;                    
}