JavaFX技巧17:带有AnchorPane的动画工作台布局

本文介绍了如何使用 JavaFX 的 AnchorPane 和时间轴动画来实现一个根据用户登录状态动态显示或隐藏菜单区域和状态区域的布局。通过更新 StackPane 中的约束并利用 AnchorPane 的布局功能,可以实现平滑的滑入滑出动画,避免了传统方法可能带来的闪烁问题。文章提供了一个控制器类的示例,展示了如何管理 AnchorPane 及其子 StackPane 来实现这一效果。
摘要由CSDN通过智能技术生成

最近,我不得不为应用程序实现一个布局,其中可以根据用户是否登录来隐藏或通过滑入/滑出动画显示或显示菜单区域和状态区域。 以下视频显示了实际的布局:

在过去,我可能会使用自定义控件和自定义布局代码来实现这种行为(如“皮肤中的layoutChildren()方法”)。 但是这次我的设置有所不同,因为我使用的是Adam Bien的afterburner.fx ,现在有了FXML和一个控制器类。

那该怎么办呢? 我决定尝试使用锚定窗格来实现运气,并通过时间轴实例更新堆栈窗格上的约束。 约束存储在堆栈窗格的可观察属性映射中。 只要这些限制发生变化,就会自动请求锚定窗格的布局。 如果发生这种情况而没有任何闪烁,那么我们最终将获得一个流畅的动画。 顺便说一句,来自Swing,我总是希望闪烁,但是JavaFX通常不会发生闪烁。

最后,我写了下面的控制器类来管理锚窗格及其子堆栈窗格。 请注意中间属性menuPaneLocationbottomPaneLocation的小技巧。 它们是必需的,因为动画时间轴可与属性一起使用。 因此,它会更新这些属性,并且每当它们更改时,都会应用新的锚定窗格约束。

import static javafx.scene.layout.AnchorPane.setBottomAnchor;
import static javafx.scene.layout.AnchorPane.setLeftAnchor;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.fxml.FXML;
import javafx.scene.layout.StackPane;
import javafx.util.Duration;</code>

/**
 * This presenter covers the top-
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值