2017-01-28 10 views
-1

Ich arbeite an einem Java-Projekt an der Uni und ich muss der Objektorientierung treu bleiben, so viel ich kann. Ich habe also Zweifel.Überprüfen, ob JTextFields leer sind

Ich habe viele Fenster mit Textfeldern und Schaltflächen und jedes Mal, wenn ich auf eine Schaltfläche klicke, muss ich prüfen, ob die Textfelder in Rahmen leer sind.

Nun, was ich getan habe, war das Hinzufügen einer neuen Methode in ActionListener-Klassen und nannte es check(). Diese Methode überprüft, was ich gesagt habe, und wenn es leere Textfelder gibt, löst es eine Ausnahme aus, die ich erstellt habe (sagen wir EmptyFieldsException).

Dann habe ich einen try/catch-Block in actionPerformed, die Prüfmethode aufrufen. Wenn die Ausnahme abgefangen wird, erscheint ein JOptionPane.

Meine Frage ist: Ist das ein guter Weg, um ein solches Problem (mit Ausnahmen) zu behandeln? Oder ist es wirklich übertrieben? Vielleicht hätte ich einfach eine if-Anweisung in actionPerformed verwenden können, ich bin etwas verwirrt darüber.

+0

IMHO keine Ausnahmen dafür verwenden. Ausnahmen sollten für Ausnahmefälle verwendet werden, (leider?) Ungültige Eingaben sind nicht so außergewöhnlich. Ausnahmen können verwendet werden, wenn die Eingabe später verarbeitet wird, um zu erinnern, dass Sie vergessen haben, die Eingabe zu überprüfen, aber nicht, wenn Sie die Eingabe überprüfen. –

+0

Ausnahmen sind langsam und sollten nicht für die normale Überprüfung verwendet werden. Insbesondere sollten sie nicht für etwas so unauffälliges wie ein leeres Textfeld verwendet werden. Verwenden Sie ein einfaches 'if (myTextField.getText.length() == 0)' oder ähnliches. – rossum

+0

@rossum Sie verpassen die Klammern für 'getText()'. – byxor

Antwort

-1

Sie sollten bei der Erstellung einer Methode bleiben, die alle Textfelder mit if-Anweisungen überprüft und einen booleschen Wert zurückgibt.

private boolean checkFields(){ 
     if(textField1.getText().lenght()<1) 
      return false; 
     if(textField2.getText().lenght()<1) 
      return false; 
     //check all text fields 

     return true; 
} 

Die Methode, um Ihre Schaltfläche Aktion darstellt, die checkFields() -Methode und wenn sie wahr erste Anruf wird weiterhin sonst Rückkehr zurückgegeben, nachdem er den Benutzer darüber informiert, dass nicht alle Textfelder gefüllt waren.

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 
    } 

Wenn Sie sicherstellen, dass die Methode nur ausgeführt wird, wenn alle TextFields Text haben, gibt es keine Bedenken. Ausnahmen sind viel kostspieliger zu werfen und zu fangen und sollten in Ausnahmefällen verwendet werden.