JavaFX - 如何选择特定形状?

时间:2017-01-22 12:47:42

标签: button javafx nodes selection shapes

假设我有以下两个矩形,我想删除一个:enter image description here

我知道如何实现删除按钮方法,但是我不知道如何通过鼠标单击在形状之间进行选择。有人可以给我一些指导方针/例子,告诉我如何解决这个问题。感谢

编辑 - 构建矩形的位置:

if (treeview.getSelectionModel().getSelectedItem() == greenrect) {
                Rectangle rect = drag.createDraggableRectangle(200, 60, 200, 60);
                ObjectProperty<Point2D> mousePosition = new SimpleObjectProperty<>();
                GraphicsContext gc = canvas.getGraphicsContext2D();
                rect.setFill(Color.GREEN);
                container2.getChildren().addAll(rect);
                }

1 个答案:

答案 0 :(得分:1)

在这两个形状上使用相同的事件:

private List<Shape> selectedShapes = new ArrayList<>();
@FXML
public void onShapeSelected(MouseEvent e) {
  Shape shape = (Shape) e.getSource();

  if (!selectedShapes.contains(shape)) {
    selectedShapes.add(shape);
  }
}

@FXML 
public void delete(ActionEvent e) {
   // delelte all the shapes from selected shapes list
}

我在这里做的是将所选节点保存在列表中,当用户按下删除时,您将能够删除所有选定的节点。 我还建议您将所选样式添加到所选形状,以通知用户他选择了形状,当用户重新按下形状时,您可以从列表中删除形状(不要忘记也删除所选的样式)