JavaFX如何实现模态窗口


       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 modal
stage.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);
}

@Override
public 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();
}
}


  • 1
    点赞
  • 1
    收藏
  • 0
    评论
<p> <span style="font-size:14px;">一、课程简介</span><br /><span style="font-size:14px;">这是<span style="color:#E56600;">『Java学习指南系列』</span>的第20篇教程 ,是Java开发的高级课程,介绍JavaFX的高级技术。</span><br /><span style="font-size:14px;">JavaFX教程分为两篇:JavaFX入门篇,JavaFX高级篇。</span><br /><br /><span style="font-size:14px;">本篇课程的主要以实例为主,穿插必要的理论章节。以实际工程运用为背景,演示各种应用级技术的实现方式。</span> </p> <p> <span style="font-size:14px;"><br /></span><span style="font-size:14px;">二、主要内容 </span><br /><span style="font-size:14px;">本篇配备充分的实例,包含以下内容:</span><br /><span style="font-size:14px;">* 界面线程与工作线程的基本原理</span><br /><span style="font-size:14px;">* 定时任务</span><br /><span style="font-size:14px;">* 小任务,即一次性的短任务</span><br /><span style="font-size:14px;">* 进度条定制</span><br /><span style="font-size:14px;">* 对话框定制</span><br /><span style="font-size:14px;">* 滚动窗口ScrollPane的使用</span><br /><span style="font-size:14px;">* 弹出式窗口 Popup的使用方法</span><br /><span style="font-size:14px;">* 拖放技术 Drag And Drop的使用方法</span><br /><span style="font-size:14px;">* 本地程序调用</span><br /><span style="font-size:14px;">* 与网站后台的交互方法</span><br /><br /><span style="font-size:14px;">三、课程体系</span><br /><span style="font-size:14px;"><span style="color:#E56600;">〖Java学习指南系列〗</span>:包含入门与进阶语法,Swing桌面开发,安卓开发,JavaFX开发,网络通信Socket,数据结构与算法等课程。</span><br /><span style="font-size:14px;"><span style="color:#E56600;">〖网站开发系列〗</span>:包含网页基础、网站入门、数据库、网站中级、FreeMarker、网站高级、项目应用、MyBatis、Redis等课程。</span><br /><span style="font-size:14px;"></span> </p>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值