2017-01-28 28 views
-1

私はuniでJavaプロジェクトに取り組んでいます。できる限りオブジェクトの向きに忠実に留まらなければなりません。だから私は疑いがある。JTextFieldsが空であるかどうかを調べる

私はテキストフィールドとボタンのあるウィンドウがたくさんあり、ボタンをクリックするたびにフレームのテキストフィールドが空であるかどうかを確認する必要があります。

私がしたことは、ActionListenerクラスで新しいメソッドを追加し、check()と呼んでいました。このメソッドは、私が言ったことをチェックし、空のテキストフィールドがある場合は、私が作成した例外をスローします(EmptyFieldsExceptionとします)。

次に、私はactionPerformedにcheckメソッドを呼び出すtry/catchブロックを持っています。例外がキャッチされると、JOptionPaneがポップアップします。

私の質問です:このような問題を(例外を使用して)処理するには良い方法ですか?それとも、実際には過剰ですか?たぶんactionPerformedでifステートメントを使用しただけかもしれませんが、これについて少し混乱しています。

+0

IMHOでは例外が使用されていません。例外は例外的に使用する必要があります(残念なことに?)無効な入力は例外ではありません。入力をチェックするのを忘れていて、入力をチェックしていないときには思い出させないように、後で入力を処理するときに例外を使うことができます。 –

+0

例外は遅く、通常の検査に使用しないでください。特に、空のテキストフィールドとしては例外的ではないものとして使用するべきではありません。単純な 'if(myTextField.getText.length()== 0)'などを使用してください。 – rossum

+0

@rossum 'getText()'に括弧がありません。 – byxor

答えて

-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にテキストがある場合にのみメソッドが実行されるようにすると、心配することはありません。例外は投げて捕まえるのがはるかにコストがかかり、例外的な場合に使うべきです。

関連する問題