0

我正在制作美国的交互式地图。我已经将每个州的坐标映射成一个多边形。如果我将 onMouseClick 添加到多边形形状,一切正常,但是我希望能够轻松添加子元素,例如文本或按钮。因此,我将 hbox 的形状设置为适当的多边形形状。我设置边框是为了验证 hbox 的形状是否正确。

val polygon = new Polygon(new javafx.scene.shape.Polygon())
origPoints.foreach{case (x,y) => polygon.getPoints.addAll(x,y)}
shape = polygon
styleClass.setAll("country")

这很好用,并且 hbox 周围有一个红色边框。但是,当我像这样设置 onMouseClicked 事件时:

this.setOnMouseClicked(new EventHandler[MouseEvent] {
  override def handle(event: MouseEvent): Unit = {//action here}
})

它在单击时执行操作,但不再受形状约束。只要我在由形状的最大宽度和最大高度而不是定义的多边形形状确定的矩形内单击,它将执行该操作。

注意:我使用的是 scalafx,所以语法可能有点不同,但我不认为这会影响任何代码。

4

1 回答 1

0

我无法弄清楚如何让 Hbox 在单击几何边界时准确地将其更改为我的多边形形状。但是,解决方法是将 hbox 更改为 Stackpane 并将多边形添加为子节点。然后改为设置多边形的 onMouseClick。这样我仍然可以至少添加相对于边界框的孩子。

于 2017-06-27T00:22:41.497 回答