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
2. Einfügen der Button und der Verweis auf die convertDialogResult-Methode
3. Teste-Methode zum Überprüfen der Eingaben
4. Der Code beim Aufruf des Dialogs
5. Die Consolen Ausgabe
Aber wieso wird die Methode ein zweites Mal durchlaufen?
Kann mir jemand sagen wo der Fehler liegt?
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;
}
}
Java:
dialog.getDialogPane().getButtonTypes().addAll(
ButtonType.OK, ButtonType.CANCEL
);
dialog.setResultConverter(this::convertDialogResult);
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");
}
}
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()+"# ");
}
Normalerweise wird nach dem Catch die Bestandteile, also der Nachfolgende Code nicht mehr ausgeführt was ja auch nicht passiert.Bittie fehlerwerfen
sssFehlende Team eingabe
dass soll nicht
Eingabefehler# //
Aber wieso wird die Methode ein zweites Mal durchlaufen?
Kann mir jemand sagen wo der Fehler liegt?