JavaFX 使对话框像 native Windows 对话框一样闪烁

标签 java javafx dialog blink

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

最佳答案

我还没有在 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 使对话框像 native Windows 对话框一样闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40866503/

相关文章:

java - 如何从 JavaSwing GUI 打开 JavaFX GUI?

java - 如何获取完全加载页面的 html(使用 javascript)作为 java 中的输入?

android - 如何更改 Android 对话框背后的颜色

jquery-mobile - 页面加载时的 jQuery Mobile 对话框

java - Swing:将鼠标悬停在半透明 JPanel 上的单选按钮标签上

java - JavaFX 中的磨砂玻璃效果?

java - 调用目标异常 : Dapp call failed when using Aion Embedded AVM

java - akka 真的能解决死锁吗?

java - 在 JavaFX 中为面板中的对象设置相机

Android自定义对话框按钮XML onClick错误