在我的应用程序(媒体播放器)上,当应用程序处于全屏模式时,我正在淡出顶部栏和底栏。我也想在延迟几秒后淡出光标。我尝试了FadeTransition
,但仅将Node
作为参数。
我也尝试过使用线程。
Platform.runLater(new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(2000);
scene.setCursor(Cursor.NONE);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
这里我只想在延迟两秒后隐藏光标。它有效,但也挂了我的应用程序两秒钟,我不指望。
以这种方式我可以在延迟两秒后淡出光标?
答案 0 :(得分:5)
您的代码正在使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();
});