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

在弹出窗口javafx中使用模态

华心思
2023-03-14

我在窗格上保留了一个弹出对话框,它位于其他组件的顶部。现在我想禁用访问程序的所有其他组件。怎么做?

共有2个答案

龚苏燕
2023-03-14

这适用于解决方案中的<code>@Xsleek

package popupexample;

import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBoxBuilder;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;

/**
 *
 * @author reegan
 */
public class PopUpExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                popupErrorMsg();
            }
        });

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

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

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * The main() method is ignored in correctly deployed JavaFX application.
     * main() serves only as fallback in case the application can not be
     * launched through deployment artifacts, e.g., in IDEs with limited FX
     * support. NetBeans ignores main().
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }


    public void popupErrorMsg() {
        final Stage myDialog = new Stage();
        myDialog.initModality(Modality.APPLICATION_MODAL);
        Button okButton = new Button("Ok");
        okButton.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent arg0) {
                myDialog.close();
            }
        });
        Date todayDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        Scene myDialogScene = new Scene(VBoxBuilder.create()
                .children(new Text("Please Enter Validate Date \n \t "+ dateFormat.format(todayDate)), okButton)
                .spacing(30)
                .alignment(Pos.CENTER)
                .padding(new Insets(10))
                .build());

        myDialog.setScene(myDialogScene);
        myDialog.show();
    }
}
后化
2023-03-14

弹出 API 没有 initModality(Modality.APPLICATION_MODAL); 方法,这正是您想要的。在这种情况下,您可以将弹出窗口设置为舞台并使用上述方法。

 类似资料:
  • 如何通过弹出窗口显示进度条,并在流程完成后自动关闭。这是我的密码。 进度表类: 这段代码的问题是 如果我使用. show(),显示弹出窗口很流畅,但没有进度条。 如果我使用. show And等待(),显示弹出窗口需要手动退出弹出窗口才能关闭但进度条显示。 对此有什么想法/想法吗?

  • main.java--(src/sample文件夹) studentcontroller.java--(src/sample/controller文件夹) studentdao.java和sexdao.java(数据访问对象)--(src/sample/model文件夹) Student.java(公共类学生和构造器)--(src/sample/model文件夹) oddbc的util下的dbut

  • 问题内容: 我正在尝试使用javafx在webview中打开网页。单击超链接后,此网页将打开一个新的弹出窗口。 我如何打开新的弹出窗口,当尝试在默认Web浏览器(例如chrome,IE)中打开同一网页时,它们正在打开弹出窗口。 为了创建弹出窗口,我使用以下代码。 问题答案: 您需要自己创建WebView弹出窗口,并从回调中提供WebEngine。如果需要新窗口,请使用该WebView创建一个新的舞

  • 描述 (Description) 您还可以使用HTML到App方法创建动态弹出窗口。 它使用两个参数 - popupHTML - 它包含Popup内容的字符串元素。 removeOnClose - 它包含布尔值,当您关闭Popup时,它将从DOM中删除。 默认情况下,它包含真值。 例子 (Example) 以下示例演示了在Framework7中使用动态弹出窗口 - <!DOCTYPE html>

  • 我想在JavaFX应用程序中创建一个弹出窗口。给我一些想法。 当我点击检查按钮时,它会打开弹出窗口。怎么做?

  • 所以我只是想知道是否有人知道在JavaFX 8中关闭弹出窗口的正确方法。例如,如果我的弹出窗口上有一个取消按钮,当按下取消按钮时,我应该使用什么方法来摆脱弹出窗口?我目前只是使用隐藏()方法。这让我有点害怕,因为我不确定弹出窗口是否在后台某处徘徊并且仍然需要关闭。但是,当我在这里查看java文档时,我没有看到任何关闭()方法,我也没有在我的IDE自动完成中看到关闭()方法。不过,我确实在文档中看到