如果所有者最小化,则 Javafx 对话框(警报)不可见

标签 java javafx dialog javafx-8

如果所有者被最小化,为什么 javafx 中的对话框(警告)不能正确显示。

看下面的代码:

public class JavaFxSample2 extends Application {

@Override
public void start(Stage primaryStage) throws InterruptedException, ExecutionException {
    primaryStage.setTitle("open alert in 2 seconds");
    Pane pane = new Pane();
    Button b = new Button("open dialog");
    b.setOnMouseClicked(event -> {
        Task<Void> task = new Task<Void>() {
            @Override
            protected Void call() throws Exception {
                Thread.sleep(2000);
                return null;
            }
        };
        task.stateProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue == State.SUCCEEDED) {
                Alert alert = new Alert(AlertType.INFORMATION, "Hello");
                alert.initOwner(primaryStage);                  
                alert.showAndWait();
            }
        });
        Thread thread = new Thread(task);
        thread.start();
    });

    pane.getChildren().add(b);

    Scene scene = new Scene(pane, 300, 275);
    primaryStage.setScene(scene);
    primaryStage.show();
}

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

如果您在 2 秒内最小化应用程序,然后再次最大化它(2 秒后),您看不到对话框但它以某种方式存在(阶段被锁定,直到您按 esc 或 enter)

如果您不最小化舞台,对话框会正确显示。

这是一个错误吗?我做错了吗?

编辑: 系统为Windows 7,Java 1.8.0.66

编辑2: 好的。它似乎真的是一个错误: https://bugs.openjdk.java.net/browse/JDK-8151170

最佳答案

找到了一个(可能的)解决方案。 但这真的是一个好的解决方案吗?

在显示警报之前,我执行以下行:

((Stage) alert.getOwner()).setIconified(false);

如果有人有更好的主意,我会删除我的答案。

关于如果所有者最小化,则 Javafx 对话框(警报)不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36910586/

相关文章:

java - 带有通用标签的 Listview setCellFactory

java - NPE javafx.scene.control.behavior.ListViewBehavior.mousePressed

javafx - 如何使用 Set 作为 TableView 的基础

BASH:变量中的对话框输入

java - 有没有办法在Win 7下将下划线设置为 native 外观中的助记符字符?

java - Spring mvc 与 maven 给出 noHandlerFound 错误

java - 序列化成JSON时可以忽略serialVersionUID吗?

java - 为什么 Jersey 会导致单例类无法工作?

c# - 如何在 C# 中创建与 Windows 窗体关联的类?

android - 如何创建与 ContextMenu 完全一样的对话框?