美文网首页Java
如何在JavaFx应用中打开新的窗口

如何在JavaFx应用中打开新的窗口

作者: Huangjs1994 | 来源:发表于2017-12-06 23:22 被阅读115次

有时候,我们可能有这样的需求——点击按钮时能够弹出新的窗口,然后在这个窗口中提供一些服务。那么在JavaFX中如何实现呢?

其实,在JavaFX弹出新的窗口原理很简单,就是再新建一个Stage,如下代码实现点击按钮打开新的窗口,即在按钮的鼠标点击事件中新建了一个Stage

package pre.huangjs.blog;

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

public class OpenNewWindow extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {

        // 创建一个包含按钮的APP
        Button newWindowBtn = new Button("打开新的窗口");

        // 为按钮添加事件——点击时打开新的窗口
        newWindowBtn.setOnMouseClicked(new EventHandler<MouseEvent>() {
            public void handle(MouseEvent event) {

                // 创建新的stage
                Stage secondStage = new Stage();
                Label label = new Label("新窗口"); // 放一个标签
                StackPane secondPane = new StackPane(label);
                Scene secondScene = new Scene(secondPane, 300, 200);
                secondStage.setScene(secondScene);
                secondStage.show();
            }
        });

        StackPane mainPane = new StackPane(newWindowBtn); // 创建一个新的布局
        Scene scene = new Scene(mainPane, 500, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

01.gif

现在基本实现了我们的功能,但是还是存在一个不足,我们在关闭主窗口primaryStage时,打开的secondStage不会自动关闭,这个不太合理,如果想达到主窗口关闭时子窗口关闭,那么需要设置主窗口的setOnCloseRequest(EventHandler<WindowEvent> value)方法,具体代码:


    primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>(){
            public void handle(WindowEvent event) {
                Platform.exit();
            }
        });

02.gif

JavaFX初学者,如有术语使用不正确,请指正!

完整代码:

package pre.huangjs.blog;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;

public class OpenNewWindow extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {

        // 创建一个包含按钮的APP
        Button newWindowBtn = new Button("打开新的窗口");

        // 为按钮添加事件——点击时打开新的窗口
        newWindowBtn.setOnMouseClicked(new EventHandler<MouseEvent>() {
            public void handle(MouseEvent event) {

                // 创建新的stage
                Stage secondStage = new Stage();
                Label label = new Label("新窗口"); // 放一个标签
                StackPane secondPane = new StackPane(label);
                Scene secondScene = new Scene(secondPane, 300, 200);
                secondStage.setScene(secondScene);
                secondStage.show();
            }
        });

        StackPane mainPane = new StackPane(newWindowBtn); // 创建一个新的布局
        Scene scene = new Scene(mainPane, 500, 400);
        primaryStage.setScene(scene);
        primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>(){
            public void handle(WindowEvent event) {
                Platform.exit();
            }
        });
        primaryStage.show();
    }

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

相关文章

  • 如何在JavaFx应用中打开新的窗口

    有时候,我们可能有这样的需求——点击按钮时能够弹出新的窗口,然后在这个窗口中提供一些服务。那么在JavaFX中如何...

  • JAVAFX(一.事件初识)

    一 事件 一个事件代表了对应用有意义的事情的出现,如移动鼠标、敲击键盘等。在JavaFX中,一个事件是javafx...

  • 2018-05-25

    1:在Microsoft Excel中,可以同时打开多个Excel文档,而不需要新打开一个Excel窗口,这种应用...

  • JavaFX相关参考

    1.JavaFX 简介 2.JavaFX应用 3. JAVAFX - Layout Pane 布局详解参考文章 4...

  • vue 路由请求 浏览器被拦截

    之前做了一个功能是点击按钮路由跳转打开新的窗口页面这个功能在之前的文章中写到过《vue spa 单页面应用跳转打开...

  • 前端面试题专项练习30题

    1、如何在新窗口打开链接? target属性有5个值:①_self:在当前框架中打开链接② _blank:在全新的...

  • JavaFX 事件

    在JavaFX编写的程序中,当用户与应用程序交互时总会有事件发生。 1.事件类型 JavaFX中事件大致可以分为以...

  • 如何在浏览器打开新的窗口

    项目需要做一个页面聊天,需要弹出一个新的小窗口。 只用a标签的target="_blank" 熟悉不行,只是在新的...

  • Revit二次开发:模态窗口与非模态窗口

    基本介绍 1.模态窗口(modal window) ShowDialog();打开模态窗口后,会禁用应用程序中的所...

  • Skype笔记

    如何在web页面打开本地skype聊天窗口

网友评论

    本文标题:如何在JavaFx应用中打开新的窗口

    本文链接:https://www.haomeiwen.com/subject/uhjrixtx.html