几秒钟延迟后 JavaFX 中的淡出光标

Fadeout Cursor in JavaFX After Few Seconds Delay

在我的应用程序(媒体播放器)上,当应用程序处于全屏模式时,我正在淡出顶部栏和底部栏。我还想在延迟几秒钟后淡出光标。我试过 FadeTransition,但它只需要 Node 作为参数。

我也试过用thread。

    Platform.runLater(new Runnable()
    {
        @Override
        public void run()
        {
            try
            {
                Thread.sleep(2000);
                scene.setCursor(Cursor.NONE);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }

        }
    });

这里我只是想在延迟两秒后隐藏光标。它有效,但也让我的应用程序挂起两秒钟,这出乎我的意料。

延迟两秒后光标淡出有什么方法?

您的代码使 UI 挂起,因为您正在 FX 应用程序线程上进行阻塞调用 (Thread.sleep(...))。如果你想那样做,你应该在后台线程上阻塞,并在暂停完成时安排在 FX 应用程序线程上更改光标。

不过,更简单的方法是使用 PauseTransition:

PauseTransition pause = new PauseTransition(Duration.seconds(2));
pause.setOnFinished(e -> scene.setCursor(Cursor.NONE));
pause.play();

您也可以使用它来使光标在用户执行某些操作时重新出现,并在 2 秒后再次消失:

scene.addEventHandler(MouseEvent.ANY, e -> {
    scene.setCursor(Cursor.DEFAULT);
    pause.playFromStart();
});