JavaFX Dialog schließt ohne dass es schließen soll

Hallo Zusammen,
ich habe folgendes Problem. Ich habe ein Dialog geschrieben. Beim drücken auf den OK-Button sollen die Daten die vom User eingegeben wurden überprüft werden. Falls die Daten Fehler enthalten soll eine Exception geworfen werden. Diese Exception wird zwar geworfen, allerdings wird offensichtlich convertDialogResult Methode beim drücken des OK-Buttons zunächst richtig ausgeführt aber nach dem werfen der Exception ein zweitesmal durchlaufen und es wird dabei vom Programm ein click auf den Cancel-Button simmuliert.
Hier der entsprechende Code:
1.convertDialogResult -Methode
Java:
private Object convertDialogResult(ButtonType buttonType)throws IllegalStateException {
    try{
       //Falls der Cancel-Button gedrückt wird
        if (ButtonType.CANCEL.equals(buttonType)) {
            System.out.println("dass soll nicht");
             return "fehler";
        }
       //Falls der OK-Button gedrückt wird
       else{
            System.out.println("Bittie fehlerwerfen");
            teste(); //Hier werden die Eingaben überprüft
            erstelleWettkampf();
            return wettkampf;
        }
    }catch (IllegalStateException e){
        System.out.println("sss"+ e.getMessage());
        return null;
    }
}
2. Einfügen der Button und der Verweis auf die convertDialogResult-Methode
Java:
        dialog.getDialogPane().getButtonTypes().addAll(
                ButtonType.OK, ButtonType.CANCEL
        );
        dialog.setResultConverter(this::convertDialogResult);
3. Teste-Methode zum Überprüfen der Eingaben
Code:
    public void teste()throws IllegalStateException{
        boolean istfehler=false;
        if(TeamB.getText().equals("")||TeamA.getText().equals("")){
                throw new IllegalStateException("Fehlende Team eingabe");
        }else if(this.liga.getValue()==null){
                throw new IllegalStateException("Keine Liga eingegeben");
        }else if(this.spielsystem.getValue()==null){
                throw new IllegalStateException("Kein Spielsystem ausgegeben");
        }
    }
4. Der Code beim Aufruf des Dialogs
Code:
FXMLLoader root1 =new  FXMLLoader(null,ResourceBundle.getBundle("sprachen.sprachen"));
Dialog<Object> dialog =  root1.load(getClass().getResource("/liveticker/tt/gui/Aufstellung.fxml").openStream());
dialog.showAndWait();
        if(dialog.getResult().equals("fehler")){
            System.out.println("Eingabe"+ dialog.getResult()+"# ");
        }
5. Die Consolen Ausgabe
Bittie fehlerwerfen
sssFehlende Team eingabe
dass soll nicht
Eingabefehler# //
Normalerweise wird nach dem Catch die Bestandteile, also der Nachfolgende Code nicht mehr ausgeführt was ja auch nicht passiert.
Aber wieso wird die Methode ein zweites Mal durchlaufen?

Kann mir jemand sagen wo der Fehler liegt?
 
Schon mal probiert den Dialog so aufzurufen?

Code:
dialog.showAndWait().ifPresent(result -> {
       //deine Verarbeitung mit dem Ergebnis hier rein
    });
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben