【问题标题】:JavaFX Making dialog blink like native windows dialogsJavaFX 使对话框像本机 Windows 对话框一样闪烁
【发布时间】:2016-11-29 12:57:10
【问题描述】:

我正在尝试在 JavaFX 中创建自定义对话窗口。 它只是加载一个 fxml,除了一件让我烦恼的化妆品之外,一切都很好。当我在对话框之外单击时,它会正确阻止交互 - 但对话框不会像 Windows 中的本机对话框那样闪烁。我看过一个关于 C++ 和 QT 的问题,它与对话框父级有关,但遗憾的是我找不到任何关于 JavaFX 的信息。

【问题讨论】:

    标签: java javafx dialog blink


    【解决方案1】:

    我还没有在 javafx 中找到这个功能。但是对于大多数这些事情,您可以使用 awt 库来完成。

    查看this post 了解更多信息。我希望你可以将它与 javafx 一起使用。我还没有测试过,但我对此表示怀疑。

    编辑

    我做了一些测试,并为我使用Modality.WINDOW_MODALITY 进行舞台工作。 (当试图散焦时,它会发出声音并闪烁。除非整个应用程序散焦)。这是我用于辅助窗口的构造函数的一个简单示例。

    public SecondaryWindow(Window parent, String title, Modality modality, int width, int height)
    {
        // basic setup
        this.stage = new Stage();
        this.root = this.loadRoot();
    
        this.stage.setScene(new Scene(root, width, heigth));
        this.stage.setMinWidth(this.root.minHeight(-1));
        this.stage.setMinHeight(this.root.minHeight(-1));
    
        this.stage.initModality(modality);
        this.stage.setTitle(title);
        this.stage.initOwner(window);
    
    
        // this will blink your application in the taskbar when unfocused.
        this.stage.focusProperty().addListener(E -> this.stage.toFront());
    
        // this is quickfix to prevent Alt+ F4 on a secondary screen.
        this.stage.addEventFilter(KeyEvent.KEY_RELEASED, E -> {
                if(E.getCode() == KeyCode.F4 && E.isAltDown())
                {
                    E.consume();
                    this.ignoreCloseRequest = true;
                }
            });
    
            this.stage.setOnCloseRequest(E -> {
                if(!this.ignoreCloseRequest)
                    this.close();
                E.consume();
                this.ignoreCloseRequest = false;
            });
    }
    

    我希望这对您的情况有所帮助。

    【讨论】:

    • 有用,但遗憾的是我只需要保留这个实现 JavaFX。
    • @Chappi 并且我的第一个答案可能不是您想要的。我编辑了我的答案,以提供一些方法来完成您描述的大部分行为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多