JavaFX Making对话框像本机窗口对话框一样闪烁

时间:2016-11-29 12:57:10

标签: java javafx dialog blink

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

1 个答案:

答案 0 :(得分: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; }); } 作为所期望的舞台作品。 (当试图取消聚焦时,它发出声音,它会闪烁。除非整个应用程序没有聚焦)。这是我用于辅助窗口的构造函数的一个简单示例。

SELECT TOP ( 10 )
        EMPLOYEE ,
        NAME ,
        SUM(QTYFINISHED) AS QTY ,
        SUM(HOURS) AS REALTIME ,
        SUM(PROCESSTIME * QTYFINISHED / PROCESSQTY / 60) AS CALCTIME ,
        SUM(PROCESSTIME * QTYFINISHED / PROCESSQTY / 60) / SUM(HOURS) AS EFFI
FROM    EMPLOYEE
GROUP BY EMPLOYEE ,
         NAME
ORDER BY Eficience DESC

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