gpt4 book ai didi

swing - 在 Swing 应用程序中制作 JavaFX 警报/对话框模式

转载 作者:行者123 更新时间:2023-12-04 15:21:50 26 4
gpt4 key购买 nike

因此,我们再次将完全使用 Swing 的现有 Java 应用程序转换为使用 JavaFX。但是,该应用程序不会完全使用 JavaFX。这似乎会导致警报/对话框和模式出现一些问题。我们目前使用的是 Java 8u40。

主应用程序基本上位于具有菜单的 JFrame 中。主要内容 Pane 是 JDesktopPane,单击 MenuItem 会在 DeskopPane 中打开新的 JInternalFrames。目前,我们正在转换为 JavaFX 的屏幕基本上是 JInternalFrame 中的 JFXPanel。从 JFXPanel 打开的任何警报/对话框都是面板本身的模式,但不是 JInternalFrame、DeskopPane、Menu 等。

我在 DialogPane 文档中读到,他们计划在 JavaFX 的 future 版本中引入一些轻量级对话框,甚至可能引入 InternalFrames,所以也许我们只需要再等一段时间才能使用此功能。但是,理想情况下,当打开一个新的警报/对话框时,它将是整个应用程序的模态。

编辑:
目前正在为模态对话框执行以下操作:

((Stage)getDialogPane().getScene().getWindow()).setAlwaysOnTop(true);

这使得对话框始终显示在顶部,但是即使我们的主应用程序被最小化,该对话框也会保留在其他应用程序的顶部。它也不会阻止输入到框架中的任何 Swing 组件。

最佳答案

您可以使用以下解决方法来创建一个不可见的 JDialogAlert显示并处理 JDialogAlert关闭了。这种方法将模态扩展到整个应用程序,包括 Swing 部分。

// create Alert
Alert alert = new Alert(AlertType.INFORMATION, "Hello");

// create invisible JDialog and "show" it
JDialog dialog = new JDialog();
dialog.setModal(true);
dialog.setUndecorated(true);
dialog.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
SwingUtilities.invokeLater(() -> dialog.setVisible(true));

// show Alert
alert.showAndWait();

// close JDialog after Alert is closed
dialog.dispose();

关于swing - 在 Swing 应用程序中制作 JavaFX 警报/对话框模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com