具有多边形形状的Hbox的onClick不符合形状

时间:2017-06-26 15:40:17

标签: javafx scalafx hbox

我正在制作美国的互动地图。我已将每个状态的坐标映射为多边形。如果我将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,因此语法可能略有不同,但我认为这不会影响任何代码。

1 个答案:

答案 0 :(得分:0)

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

相关问题