我正在制作美国的交互式地图。我已经将每个州的坐标映射成一个多边形。如果我将 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,所以语法可能有点不同,但我不认为这会影响任何代码。