【问题标题】:Drawing node on top of the others in HBox在 HBox 中的其他节点之上绘制节点
【发布时间】:2022-02-22 04:09:17
【问题描述】:

我正在寻找一种在 HBox 中在相邻节点之上绘制节点的方法。默认行为意味着它被绘制在前一个之上,但这也意味着下一个被绘制在它之上。对于其他容器,可以使用 Node.toFront(),但更改包含 HBox 子项的列表中节点的位置也会更改 HBox 中的实际位置,这在我的情况下是不需要的行为。感谢您的帮助,谢谢。

编辑: 当在 Ellipse 上应用 DropShadow 效果并将它们与 Text 一起包装在 StackPane 中时,会发生重叠。看起来效果与 HBox 有一种奇怪的交互,因为没有它它可以按预期工作。添加效果后,它为椭圆分配了更多的水平空间,但不足以覆盖效果的边缘。此外,当单击整个黑色矩形右半部分的任意位置时,鼠标单击会被调度到 stackPane 事件处理程序,而不是矩形的。

This happens

【问题讨论】:

  • 通常HBox 会将孩子们吸引到不同的区域。你如何让它们重叠?
  • 首先为HBox设置一个标准尺寸,然后玩每个孩子的尺寸和填充。你想做什么?一张图片将不胜感激,因为我们可以提供代码。
  • @fabian 已编辑以添加更多信息。感谢您的宝贵时间

标签: javafx hbox


【解决方案1】:

在 VBox 和 HBox 中,Node.toFront() 和 Node.toBack() 函数会改变布局,因此它们不可用。如果您使用的是 JavaFX 9+,您可以使用 viewOrder 命令来更改其 Parent 中 Node 的渲染顺序:

Node.getViewOrder()
Node.setViewOrder()

viewOrder 的默认值为 0,因此将其设置为 -1 会将其呈现在所有其他之上。您可以对其进行自定义以获取特定订单。它还有一个 CSS 属性 -fx-view-order。

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多