JavaFX如何实现模态窗口

来源:互联网 发布:h海南大学网络 编辑:程序博客网 时间:2024/05/31 13:15

       JavaSE中,使用JOptionPane.show***window可以生产模态的对话框窗口,即用户必须点击对话框的按钮后,才能返回主窗口继续操作,否则无法进行其他操作。但是JavaFX 中没有提供类似JOptionPane的静态类来生成弹出的对话框窗口,若自己写的话,应该如何实现模态呢?


       下面是一个实现dialog box:

import javafx.stage.*; import javafx.scene.*;import javafx.scene.paint.Color;import javafx.scene.control.*;import javafx.event.ActionEvent;import javafx.event.EventHandler;public class ModalDialog {Button btn;public ModalDialog(final Stage stg) {btn = new Button();final Stage stage = new Stage();//Initialize the Stage with type of modalstage.initModality(Modality.APPLICATION_MODAL);//Set the owner of the Stage stage.initOwner(stg);stage.setTitle("Top Stage With Modality");Group root = new Group();Scene scene = new Scene(root, 300, 250, Color.LIGHTGREEN);btn.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {stage.hide();}});btn.setLayoutX(100);btn.setLayoutY(80);btn.setText("OK");root.getChildren().add(btn);stage.setScene(scene);stage.show();}}import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.paint.Color;import javafx.stage.Stage;public class ModalTest extends Application {/*** @param args the command line arguments*/public static void main(String[] args) {Application.launch(ModalTest.class, args);}@Overridepublic void start(final Stage primaryStage) {primaryStage.setTitle("Hello World");Group root = new Group();Scene scene = new Scene(root, 500, 450, Color.LIGHTBLUE);Button btn = new Button();btn.setLayoutX(250);btn.setLayoutY(240);btn.setText("Show modal dialog");btn.setOnAction(new EventHandler<ActionEvent>() {public void handle(ActionEvent event) {ModalDialog md = new ModalDialog(primaryStage);}});root.getChildren().add(btn);primaryStage.setScene(scene);primaryStage.show();}}


0 0