我正在为uni的Java项目工作,我必须尽可能地保持对面向对象的忠诚度。所以我有一个疑问。
我有很多带有文本字段和按钮的窗口,每当我点击一个按钮时,我需要检查框架中的文本字段是否为空。
现在我做的是在ActionListener类中添加一个新方法并将其命名为check()。这个方法检查我说的是什么,如果有空文本字段,它会抛出我创建的异常(让我们说出EmptyFieldsException)。
然后我在actionPerformed中有一个try / catch块,调用check方法。如果捕获到异常,则会弹出JOptionPane。
我的问题是:这是处理此类问题(使用例外)的好方法吗?或者它实际上是矫枉过正?也许我可以简单地在actionPerformed中使用if语句,我对此有点困惑。
答案 0 :(得分:-1)
您应该坚持创建一个方法,使用if语句检查所有文本字段并返回一个布尔值。
private boolean checkFields(){
if(textField1.getText().lenght()<1)
return false;
if(textField2.getText().lenght()<1)
return false;
//check all text fields
return true;
}
表示按钮操作的方法将首先调用checkFields()方法,如果返回true,则在通知用户并非所有文本字段都已填充后再继续返回。
private void buttonAction(){
if(!checkFields()){
Alert message=new Alert( Alert.AlertType.WARNING);
message.setHeaderText("Text field empty");
message.setContentText("One of the text fields is empty");
message.showAndWait();
return;
}
//continue the method
}
如果您确保只有在所有TextField都有文本的情况下才会运行该方法,则无需担心。抛出和捕获的例外成本要高得多,并且应该在特殊情况下使用。