codestory

Öffnen Sie ein neues Fenster (window) in JavaFX

  1. Window im JavaFX
  2. Zum Beispiel: Öffnen Sie ein Modeless Window
  3. Zum Beispiel: Öffnen Sie ein Modal Window

1. Window im JavaFX

Um im JavaFX ein Fenster (window) zu erstellen, benutzen Sie die Klasse Stage
Es gibt 3 Modelität, die Sie für Stage durch die Methode stage.initModality(Modelity) anwenden.
  • Modelity.NONE
  • Modelity.WINDOW_MODAL
  • Modelity.APPLICATION_MODAL
Bei der Erstellung einer Stage können Sie ihre Vater-Fenster (ihr Eigentumsfenster) durch die Methode stage.initOwner(parentStage) einstellen.
No
Modelity
Die Bezeichnung
1
Modelity.NONE
Wenn Sie ein Fenster mit der Modalität öffnen, wird das Fenster unabhängig von dem Vaterfenster sein. Sie können interaktiv mit dem Vaterfenster sein oder schließen das Vaterfenster, das auf das neue Fenster nicht auswirkt
2
Modelity.WINDOW_MODAL
Wenn Sie ein Fenster mit der Modaliät öffnen, wird das Fenster das Vaterfenster schließen. Sie können mit dem Vaterfenster nicht interaktivieren bis zur Schließung des Fenster
3
Modelity.APPLICATION_MODAL
Wenn Sie ein Fenster mit der Modalität (modelity) öffnen, wird es alle anderen Fenster der Applikation schließen. Sie können mit irgendeinem Fenster bis zur Schließung des Fenster nicht interaktivieren

2. Zum Beispiel: Öffnen Sie ein Modeless Window

Zum Beispiel: Wenn Sie auf ein Button auf dem Fenster 1 klicken, wird es ein 2.Fenster mit der Default-Modelität (modelity) öffnen(Modeless Window / Modelity.NONE).
OpenNewModelessWindowExample.java
package org.o7planning.javafx.window;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class OpenNewModelessWindowExample extends Application {

	@Override
	public void start(final Stage primaryStage) {

		Button button = new Button();
		button.setText("Open a New Window");

		button.setOnAction(new EventHandler<ActionEvent>() {

			@Override
			public void handle(ActionEvent event) {

				Label secondLabel = new Label("I'm a Label on new Window");

				StackPane secondaryLayout = new StackPane();
				secondaryLayout.getChildren().add(secondLabel);

				Scene secondScene = new Scene(secondaryLayout, 230, 100);

				// New window (Stage)
				Stage newWindow = new Stage();
				newWindow.setTitle("Second Stage");
				newWindow.setScene(secondScene);

				// Set position of second window, related to primary window.
				newWindow.setX(primaryStage.getX() + 200);
				newWindow.setY(primaryStage.getY() + 100);

				newWindow.show();
			}
		});

		StackPane root = new StackPane();
		root.getChildren().add(button);

		Scene scene = new Scene(root, 450, 250);

		primaryStage.setTitle("JavaFX Open a new Window (o7planning.org)");
		primaryStage.setScene(scene);
		primaryStage.show();
	}

	public static void main(String[] args) {
		launch(args);
	}

}

3. Zum Beispiel: Öffnen Sie ein Modal Window

Zum Beispiel: Wenn Sie auf ein Button auf dem Fenster 1 öffnen, wird es ein neues Fenster mit der Modalität Modal Window (Modelity.WINDOW_MODAL) öffnen. Wenn das neue Fenster anzeigt, können Sie mit dem Vaterfenster nicht interaktivieren
OpenNewModelWindowExample.java
package org.o7planning.javafx.window;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class OpenNewModelWindowExample extends Application {

   @Override
   public void start(final Stage primaryStage) {

      Button button = new Button();
      button.setText("Open a New Window");

      button.setOnAction(new EventHandler<ActionEvent>() {

         @Override
         public void handle(ActionEvent event) {

            Label secondLabel = new Label("I'm a Label on new Window");

            StackPane secondaryLayout = new StackPane();
            secondaryLayout.getChildren().add(secondLabel);

            Scene secondScene = new Scene(secondaryLayout, 230, 100);

            // New window (Stage)
            Stage newWindow = new Stage();
            newWindow.setTitle("Second Stage");
            newWindow.setScene(secondScene);

            // Specifies the modality for new window.
            newWindow.initModality(Modality.WINDOW_MODAL);

            // Specifies the owner Window (parent) for new window
            newWindow.initOwner(primaryStage);

            // Set position of second window, related to primary window.
            newWindow.setX(primaryStage.getX() + 200);
            newWindow.setY(primaryStage.getY() + 100);

            newWindow.show();
         }
      });

      StackPane root = new StackPane();
      root.getChildren().add(button);

      Scene scene = new Scene(root, 450, 250);

      primaryStage.setTitle("JavaFX Open a new Window (o7planning.org)");
      primaryStage.setScene(scene);
      primaryStage.show();
   }

   public static void main(String[] args) {
      launch(args);
   }

}

Die Anleitungen JavaFX

Show More