[JavaFX]Wenn felder belegt dann Meldung Verwerfen?

emibo74

Mitglied
Hallo ich lerne für meine GUI Prüfung und hänge grad an einer Stelle, unzwar soll er wenn ich auf das Schließfeld klicke und die TextFeler leer sind sofort schließen falls die belegt sind soll eine Meldung erscheinen ob ich es verwerfen soll. Mit Button geschafft nur Schließfeld nicht :S
Java:
    @FXML
    public void abbrechen() {
        Stage beenden = (Stage) bAbbrechen.getScene().getWindow();
        if (!(tfMitgliedsnummer.getText().isEmpty() && tfName.getText().isEmpty() && tfPLZ.getText().isEmpty() && tfKontonr.getText().isEmpty()
                && tfBLZ.getText().isEmpty() && tfBank.getText().isEmpty() && tfKontoinhaber.getText().isEmpty() && tfJahresbeitrag.getText().isEmpty()
                && cbZahlungsweise.getValue() == null && dpAustrittsdatum.getValue() == null && dpEintrittsdatum.getValue() == null)) {

            Alert meldung = new Alert(Alert.AlertType.CONFIRMATION, "Möchten Sie die Vorlage Verwerfen?", ButtonType.YES, ButtonType.NO);
            meldung.setTitle("Beenden");
            meldung.setHeaderText(null);
            meldung.showAndWait();

            if (meldung.getResult().getText().equals("Ja")) {
                beenden.close();

            }
        } else {
            beenden.close();
        }
    }

in der Stage hab ich das versucht jedoch kann ich im EventHandler keinen Textfeld auf leerweit überprüfen.
Nun habe ich mir gedacht warum ich das nicht im Controller in der initialize Methode mache, aber ich konnte irgendwie nicht auf die Stage zugreifen hab
Java:
Stage stage = (Stage)AnchorPane.getScene().getWindow();
getestet was mir ein Compile Fehler gibt.

So sieht zurzeit meine Stage aus
Java:
public class AufnehmenMain {

    public AufnehmenMain() throws IOException {

        Stage zweite = new Stage();

        Parent root = FXMLLoader.load(getClass().getResource("Aufnehemen.fxml"));

        Scene scene = new Scene(root);

        zweite.setTitle("Mitglied - Aufnehmen");
        zweite.setScene(scene);
        zweite.show();
    }
}
und im Controller sind halt die Textfelder deklariert.

Wäre hilfreich wenn ihr mir helfen könntet
Mit freundlichen Grüßen
 
Warum machst du den keine Methode im Controller der die Stage bekomment und eine run() Mehtode in der du dann die Eventhandler erstellst. Dann must du nur Controller.setParentStage() und Controller.run() nach dem initialiseren in der Stage einfügen. Andersrum kannst du getter im Controller einfügen um in der Stage zugriff auf die Element zu haben.
 
Sein Weg an die Stage zu kommen ist Grundsätzlich schon korrekt. Aber der Code ist zu unvollständig - und das Deutsch zu ... mir fehlen die Worte - als dass man eine Aussage treffen kann.
Wenn es darum geht, die Anwendung komplett zu schliessen: Verwende statt Stage#hide (das ist die richtige Methode) lieber Platform#exit...
 

Neue Themen


Zurück
Oben