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

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

在过去,我可能会使用自定义控件和自定义布局代码来实现这种行为(如“皮肤中的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、付费专栏及课程。

余额充值