%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Java}
\chead{}
\ohead{http://kohnlehome.de/java/javafx-dialog.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
JavaFX-Dialog
\end{center}


\section{Dialogklasse mit Controller: \texttt{DialogMitController.java}}
\begin{verbatim}
public class DialogMitController extends Stage implements Initializable {

    @FXML
    private Button buttonOK; // OK-Button zum Schliessen des Dialogfenster
       
    private Daten daten;     // zum Austausch Hauptfenster <-> Dialogfenster

    public DialogMitController() {
        // FXML-Datei für Dialogfenster
        final URL url = getClass().getResource("dialogfenster.fxml");
        final FXMLLoader fxmlLoader = new FXMLLoader(url);
        
        // Klasse ist selbst Controller (Initializable)
        fxmlLoader.setController(this);
        
        // Fensterinhalt aus FXML-Datei
        final Parent root = fxmlLoader.load();
        this.setScene(new Scene(root));
            
        // Fenstereigenschaften
        setTitle("Dialogfenster");       
    }

    // zum Datenaustausch Hauptfenster <-> Dialogfenster
    public void setDaten(Daten daten) {
        this.daten = daten;
        ... = daten. ...
    }

    public Daten getDaten() { 
        return daten;
    }

    // Klasse ist selbst Controller
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        buttonOK.setOnAction(event -> {
            // Daten schreiben            
            daten.set ...

            // Dialog schliessen
            this.close();
        });
    }
}
\end{verbatim}

\newpage

\section{Modales Dialogfenster anzeigen: \texttt{Controller.java}}
\begin{verbatim}
// Irgendeine Node im Scene-Graph des Hauptfensters
@FXML
private Button button;
...

// Modales Dialogfenster erzeugen
DialogMitController dialog = new DialogMitController();
dialog.initModality(Modality.WINDOW_MODAL);
dialog.initOwner(button.getScene().getWindow());
           
// Daten übergeben
Daten daten = ...
dialog.setDaten(daten);

// Dialog anzeigen
dialog.showAndWait();
           
// Dialog auswerten
... = dialog.getDaten();
\end{verbatim}



\end{document}
