清空JTextField并添加数字

时间:2015-06-21 19:28:45

标签: java swing error-handling

我有三个JTextfields,叫做vol1HH1,vol1HH2,vol1HH3和fvol。其结果在actionPerformed事件后输出。

用户可能只是输入一个数字到vol1HH1和vol1HH2而不是vol1HH3,我如何确保添加两个数字并将结果显示到fvol而不会导致空JTextField vol1HH3的数字处理错误?

public void actionPerformed(ActionEvent e) {
double number1 = Double.parseDouble(vol1HH1.getText());
double number2 = Double.parseDouble(vol1HH2.getText());
double number3 = Double.parseDouble(vol1HH3.getText());

fvol.setText(Double.toString(number1 + number2 + number3));
}

我试过这个,但这似乎不起作用,我做错了什么?

double sum = 0;

if (!vol1HH1.getText().trim().isEmpty()||!vol1HH2.getText().trim().isEmpty()){
   // only now parse the text and add it
   sum += Double.parseDouble(vol1HH1.getText());
   sum += Double.parseDouble(vol1HH2.getText());
}


fvol.setText(Double.toString(sum));

2 个答案:

答案 0 :(得分:2)

  1. 确保只能将数字添加到JTextFields - 添加到JTextField文档的DocumentFilter可以很好地解决这个问题。有关详情,请参阅my answer to a similar question
  2. 测试JTextField是否为空之前尝试使用简单的if块解析它:
  3. if (!myTextField.getText().trim().isEmpty()) {
       // only now parse the text and add it
       sum += Double.parseDouble(myTextField.getText());
    }
    

答案 1 :(得分:1)

为避免将空字符串传递给Double.parseDouble()方法,为什么不使用条件运算符?

可能是这样的 我猜double number3 = Double.parseDouble(vol1HH3.getText().equals("") ? "0" : vol1HH3.getText());会帮助你解决问题。

每当字段为空时,vol1HH3.getText()返回一个空字符串并在此时传递0将完成工作并且不会影响您的总和。