0

我已经搜索了这个站点,oracle 和其他站点,但无济于事。

我的程序有几个问题,但现在我只想处理一个。

首先让我发布我遇到问题的程序部分

验证年龄方法

 private void verifyAge()
 {
     String ca = iP.cAge.getText();
     try
     {
         a = Integer.parseInt(ca); 
         if (a < 0 || a > 120)
         {
             JOptionPane.showMessageDialog(null,"Enter number between 0"
                     + " and 120", "Input Error",JOptionPane.ERROR_MESSAGE);
             iP.cAge.setText("");  
         }
     }
     catch(NumberFormatException afe)
     {
         JOptionPane.showMessageDialog(null, "Must Enter Number", "Input"
                 + " Error", JOptionPane.ERROR_MESSAGE);
         iP.cAge.setText("");
     }
} 

我有一个 FileListener,这段代码将进入。在继续执行代码之前,它需要运行和循环,直到错误得到修复。有没有人有任何建议,请举例说明。

4

2 回答 2

2

您有两种选择来实现这一目标:

  1. 从您的验证方法返回一个值并检查 acitonPerformed 中的值。如果经过验证,则仅移至下一个方法。您可以通过放置几个 if/else 语句来实现这一点

  2. 或者您可以创建验证异常类。如果您的 validate 方法无法验证,那么它应该抛出一个异常,您可以在执行的操作中捕获该异常。如果您将所有 validate 方法放在 try 块中,那么如果一个方法抛出异常,您可以在到达 catch 块时跳过其他方法。

我不确定我是否正确理解了您的第二个问题。据我了解,即使您的 addFile 方法引发异常,您也希望继续执行该程序。对于这种情况,您需要将 addFile 方法调用包装在单独的 try catch 中。如果您的程序可以在逻辑上继续添加文件失败,则您无需从您的 actionPerformed 返回。只需在 catch 中记录 addFile 失败的错误,然后在 catch 语句之后继续执行其余代码。

于 2013-06-16T05:32:34.427 回答
2

首先,创建一个新的Exception名为ValidationException. 让每个方法都抛出这个。您现在需要在ActionListener. 这样,当一个方法失败时,您可以停止所有其他方法的执行。

其次,您需要一些方法来突出或聚焦失败的领域。

您可以使用诸如Component被调用(例如)之类的东西invalidField。如果这不是null(在actionPerformed方法中),您可以调用requestFocusInWindow以将焦点控制返回到该字段。

每个验证方法都需要在他们抛出之前设置它ValidationException

于 2013-06-16T05:33:42.450 回答