我最近注意到,我致力于ControlsFX项目的PopOver控件无法正确剪切其内容。 当我为FlexCalendarFX框架开发手风琴弹出窗口时,这一点变得显而易见。 每当最后一个标题窗格扩展时,其底角不再是圆角而是正方形。 在将红色矩形作为内容放置到标题窗格后,对我很清楚我忘记添加剪辑了。 下图显示了该问题。
通常,使用JavaFX进行剪切非常容易。 它只需要一个附加节点和对setClip(node)的调用。 但是,通常此剪辑是简单的形状,例如矩形。 在PopOver情况下,剪辑必须是路径,就像用于PopOver形状的原始路径一样。 为什么要走? 因为弹出窗口在“附加”到所有者时,还具有指向所有者的箭头。 请参见下面的屏幕截图。
因此,好事是原始路径是基于一系列路径元素构造的。 这些不是节点,可以重用于第二条路径。 当我尝试此操作时,结果是一个PopOver,它仅包含一个完全没有内容的边框。
这样做的原因是未填充路径。 在剪辑路径上设置填充后,结果就是我想要的。
现在,PopOver控件正确地剪切了其内容。 下图显示了最终结果。
有人可能会说这只是次要的细节,这是正确的,但是对细节的关注使应用程序脱颖而出,看起来很专业。
下图显示了FlexCalendarFX中如何使用PopOver。
翻译自: https://www.javacodegeeks.com/2015/02/javafx-tip-18-path-clipping.html