当前位置: 首页 > 知识库问答 >
问题:

如何在JavaFX中冻结对话框

瞿宏儒
2023-03-14

我在JavaFX的一个阶段中创建了一个按钮(名为test)。然后,当你按下这个按钮时,我会显示一个对话框,其中还有一个按钮(目前这并不重要)。现在,我希望对话框可以让我冻结整个应用程序。我的意思是,我不应该回到前一阶段,我可以这样做,只需用“X”关闭窗口。

private TextInputDialog dialog;
    private Text actionStatus;
    private final String defaultVal = "Default text";
    private static final String titleTxt = "Esempio JavaFx Dialog";



test.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent e) {

                    Stage dialogstage = new Stage();


                    dialogstage.setTitle(titleTxt); 

                    // Window label
                    Label label = new Label("Text Input Dialog");
                    label.setTextFill(Color.DARKBLUE);
                    label.setFont(Font.font("Calibri", FontWeight.BOLD, 36));
                    HBox labelHb = new HBox();
                    labelHb.setAlignment(Pos.CENTER);
                    labelHb.getChildren().add(label);

                    // Button
                    Button textbtn = new Button("Premi");
//                  textbtn.setOnAction(new TextButtonListener());
                    HBox buttonHb = new HBox(10);
                    buttonHb.setAlignment(Pos.CENTER);
                    buttonHb.getChildren().addAll(textbtn);

                    // Status message text
                    actionStatus = new Text();
                    actionStatus.setFont(Font.font("Calibri", FontWeight.NORMAL, 20));
                    actionStatus.setFill(Color.FIREBRICK);

                    // Vbox
                    VBox vbox = new VBox(30);
                    vbox.setPadding(new Insets(25, 25, 25, 25));;
                    vbox.getChildren().addAll(labelHb, buttonHb, actionStatus);

                    // Scene
                    Scene scene = new Scene(vbox, 500, 250); // w x h
                    dialogstage.setScene(scene);
                    dialogstage.show();

                    // Initial dialog
//                  displayTextDialog();


                    textbtn.setOnAction(new EventHandler<ActionEvent>() {
                        public void handle(ActionEvent e) { 
                        }

                    });


            }
        });

共有2个答案

邢臻
2023-03-14

它很容易做到这一点,

您必须在代码中添加以下短语:

Stage.initOwner(yourNewWindow)
勾学博
2023-03-14

首先,从舞台上取下关闭按钮:

dialogstage.initStyle(StageStyle.UNDECORATED);

然后使您的舞台成为模态(一个对话框,它阻止输入到应用程序中的一些其他顶级窗口,以对话框作为其所有者创建的窗口除外。模态对话框捕获窗口焦点,直到其关闭,通常是为了响应按钮按下)

dialogstage.initModality(Modality.WINDOW_MODAL);

并定义所有者(父级),以便模态工作

dialogstage.initOwner( parentStage );
 类似资料:
  • 本文向大家介绍如何冻结JavaScript中的对象?,包括了如何冻结JavaScript中的对象?的使用技巧和注意事项,需要的朋友参考一下 在实时世界中,JavaScript没有其他语言中的传统类。它具有对象和构造函数。 Object.freeze()是许多有助于冻结对象的构造函数方法之一。 冻结对象不允许将新属性添加到该对象,并且还阻止该对象更改其自身的属性。Object.freeze()将始终

  • 问题内容: 我需要在JavaFX中创建一个对话框。我知道我可以通过修改模式,所有者和可调整大小的属性来使舞台表现得像对话框。 但是,如何从舞台窗口中隐藏“最小化”和“最大化”按钮?典型的对话框只有“关闭”按钮。 问题答案: 在Windows 7下,在显示窗口之前初始化为StageStyle.UTILITY将创建一个仅具有关闭按钮而没有最小化或最大化按钮的窗口: 如果您需要一整套基本的JavaFX对

  • 我需要用JavaFX创建一个对话框。我知道我可以通过修改modal、owner和resizable属性使Stage的行为像一个对话框。 但是我如何从舞台窗口隐藏“最小化”和“最大化”按钮呢?典型的对话框只有“关闭”按钮。

  • 我尝试了很多我在网上看到的不同东西,但我什么都做不了。我只需要一个简单的对话框,当你点击菜单中的退出按钮并询问“您确定要退出吗?”并提供一个有效的“是的,我确定。”和“不,取消”按钮。

  • 问题内容: 是否有本地化JavaFX FileChooser对话框的选项?在Swing中,JFileChooser的本地化非常简单(超过)。但是我在JavaFX中找不到类似的功能。 问题答案: 我认为你不能。从Javadocs: 提供对标准平台文件对话框的支持。这些对话框具有独立于JavaFX的平台UI组件的外观。 由于这些是本机“文件选择器”对话框,因此其中显示的文本将由平台的语言环境控制(即,

  • 问题内容: 我正在尝试创建一个正在运行的JavaFX程序-但我正在尝试获取一个进度条以在运行时进行更新。 但是,该程序似乎只是冻结并锁定,直到完成处理为止。 有谁知道我如何让程序在运行时不冻结-以及让进度条在进程运行时进行更新? 谢谢 问题答案: 您可以将进度条进度放在a中,以便稍后再执行。