Stage
存在,其中包含一些简单的节点,例如Circle
布局中的Rectangle
(RIGHT)和BordePane
(LEFT)。
我想要的是,如果鼠标未移动1秒钟(在窗口中),圆消失了。
如果elememt在最后1秒钟内未输入Rectangle
,则矩形消失。
我正在考虑使用Thread
,但这似乎不正确。
有没有JavaFX
软件包可以执行此操作?有些代码将不胜感激。
最佳答案
使用几个PauseTransition
:
PauseTransition hideCircle = new PauseTransition(Duration.seconds(1));
PauseTransition hideRectangle = new PauseTransition(Duration.seconds(1));
// restart hideCircle if mouse moves in window:
scene.addEventFilter(MouseEvent.MOUSE_MOVED, e -> hideCircle.playFromStart());
// restart hideRectangle if mouse enters rectangle:
rectangle.setOnMouseEntered(e -> hideRectangle.playFromStart());
// hide circle if pause gets to end:
hideCircle.setOnFinished(e -> circle.setVisible(false));
// hide rectangle if pause gets to end:
hideRectangle.setOnFinished(e -> rectangle.setVisible(false));
// start "timers":
hideCircle.play();
hideRectangle.play();
您可能更希望从其父级中删除形状,而不是将
visible
设置为false,具体取决于您要执行的操作。