【问题标题】:Setting the shape property of an Hbox - JavaFX设置 Hbox 的形状属性 - JavaFX
【发布时间】:2017-11-28 05:55:21
【问题描述】:

我正在尝试将 hbox 的 shape 属性设置为多边形。以下代码在一个类中,该类使用一个构造函数扩展 Hbox,该构造函数需要一个名为 origPoints 的点列表。

val polygon = new javafx.scene.shape.Polygon()
origPoints.foreach{case (x,y) => polygon.getPoints.addAll(x,y)}
setShape(polygon)
setStyle("-fx-border-color: red")

对不起,如果语法有点不同。我正在使用 ScalaFX,但我认为在这种情况下不会导致任何问题。

如需更多信息:我正在制作一张复杂的美国地图。我为每个州绘制了坐标。我想有使用hbox的优点,比如可以添加文字之类的子项。

【问题讨论】:

  • 根据this,你应该设置minSize();和 maxSize();
  • 谢谢,设置最小/最大尺寸使 hbox 有一个形状,所以边框会显示出来。现在的问题是它们都锚定在左上角,因为我使用锚窗格作为父窗格。知道如何通过坐标指定 hbox 上的原点吗?似乎这离窗格的预期用途越来越远了。
  • 为此写下答案并接受它,或删除问题。然后对你的新问题进行研究。如果您找不到新问题的答案,请针对该问题创建一个新线程。

标签: javafx scalafx hbox


【解决方案1】:

正如 Sedrick Jefferson 指出的那样,需要设置 minWidth 和 minHeight ,否则 hbox 更喜欢 0 高度/宽度。我希望我的国家/地区能够在调整窗口大小时进行缩放,因此我将它们的 minHeight/minWidth 属性绑定到 SimpleDoubleProperty,该属性跟踪背景的缩放比例,以便相应地缩放高度/宽度。

origPoints.foreach{case (x,y) => polygon.getPoints.addAll(x,y)}
shape = polygon
styleClass.setAll("country")
minHeight.bind(yScale.multiply(origHeight))
minWidth.bind(xScale.multiply(origWidth))

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 2018-04-06
    • 1970-01-01
    • 2015-06-24
    • 2019-12-23
    • 1970-01-01
    • 2013-04-28
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多