JavaFXML - Close()

JavaFX und die Programmierung

Moderator: wegus

Antworten
Lerando
Beiträge: 1
Registriert: 26.04.2012, 10:12

JavaFXML - Close()

Beitrag von Lerando » 26.04.2012, 10:23

Hy, ich habe eine Anwendung die ich über JavaFX (JavaFXML) programmiert habe. Ich bin Anfänger und benutze als IDE NetBeans 7.1.1.
Die Java-Version ist:
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b05)
Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing)

Alles funktioniert wie ich will, nur das Schließen bereitet mir Probleme.

Da ich mit JavaFXML das Fenster programmiert habe, bekomme ich es nicht hin, das Fenster über einen Button zu schließen.

Da die Buttons per fxml erstellt werden, habe ich eine Controller-Class, die die Events behandelt.

Mein Problem ist nun, wie bekomme ich es hin, dass ich das Fenster per "Schließen"-Button beenden kann.

Das Schließen führe ich im zweiten Fenster aus. Das Programm ist noch nicht fertig, es sind nur die Fenster erstellt worden.

Initialisierung des Fensters:

Code: Alles auswählen

    package com.gast.personendaten;
     
    import java.util.ResourceBundle;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
     
    /**
     * Main-Fenster für die Erfassung der Personendaten
     * @author AL
     * @version 1.0
     * @since 25.04.2012
     * <br>Initialisierung des Fensters für die Eingabe
     */
    public class PersonendatenMain extends Application
    {
        personenwindowController pwC;
        Stage stopStage;
        /**
         * Initialisierung des Fensters für Personendaten-Eingabe
         * @param stage
         * @throws Exception
         * @version 1.0
         * @since 25.04.2012
         */
        @Override
        public void start(Stage stage) throws Exception {
           
           
            stage.setTitle("Personendaten");
           
            Parent root = FXMLLoader.load(getClass().getResource("personenwindow.fxml"),
                    ResourceBundle.getBundle("com.gast.personendaten.personenwindow"));
            Scene scene = new Scene(root, 520, 360);
            stage.setScene(scene);
           
            //Style-Sheet angeben
            scene.getStylesheets().add("com/gast/personendaten/personenwindow.css");
           
            stage.show();
           
            pwC = new personenwindowController(stage);
     
        }
     
    }
hier werden die Events behandelt:

Code: Alles auswählen

    package com.gast.personendaten;
     
    import java.util.ArrayList;
    import java.util.List;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.stage.Stage;
     
    /**
     * Controller für die Event-Behandlung des Personen-Eingabe-Fensters
     *
     * @author AL
     * @version 1.0
     * @since 24.04.2012 <br><br>Regelung der Events für: <br>- Daten speichern
     * <br>- Fenster schließen
     */
    public class personenwindowController
    implements PersonendatenInterface
    {
       
        private List<String> felderPersonendaten = new ArrayList<>();
        private Stage stage;
     
        /**
         * Leerer Konstruktor
         */
        public personenwindowController() {
        }
       
        public personenwindowController(Stage stage) {
            this.stage = stage;
                   
            System.out.println("Konstruktor geladen : " + this.stage.toString());
        }
       
        /**
         * Konstruktor für das Fenster der Personeneingabe
         * @param list ArrayList für die Eingabefelder<br>Die Eingabefelder sind
         * die Beizeichnungen der Eingabefelder<br>- Vorname<br>- Nachname
         * <br>- Straße<br>- PLZ<br>- Ort
         * @version 1.0
         * @since 24.04.212 <br>
         * <br>Die Übergebenen Parameter werden
         */
        public personenwindowController(List<String> list) {
            this.felderPersonendaten = list;
           
        }
       
       
       
        /**
         * Speichern der eingegebenen Daten in der Datenbank
         * @param event
         * @throws Exception
         * @version 1.0
         * @since 26.04.2012
         */
        @FXML
        protected void btnSpeichern_Click(ActionEvent event) throws Exception {
            System.out.println("Speichern");
        }
       
        /**
         * Schließen der Anwendung
         * @param event
         * @throws Exception
         * @version 1.0
         * @since 26.04.2012<br>
         * <br>Schließen des Fensters für die Eingabe der Personendaten
         */
        @FXML
        protected void btnSchliessen_Click(ActionEvent event) throws Exception {
               stage.close();
        }
    }
Ich übergebe das Objekt stage nach stage.show(); an den Controller. Sobald aber der Event für den Button ausgeführt wird, wird sofort ein Fehler ausgelöst.

Die Sources sind im Anhang.

Im Internet habe ich nichts gescheites gefunden, mir würden ein paar Links genügen, die einen blutigen Anfänger weiterbringen.

Danke für Eure Unterstützung

Gruß Lerando
Dateianhänge
src.zip
Sources des Programmes
(39.94 KiB) 424-mal heruntergeladen

Antworten