JavaFX分组和删除节点

时间:2015-04-19 20:59:37

标签: java javafx

我正在处理一个代码,该代码会创建一个应用程序,无论我点击哪个点都会绘制点。我是JavaFX的新手,我理解了如何将对象添加到屏幕的一般原则,一切正常,除了我无法弄清楚如何删除项目。我目前正在查看LinkedList,如果使用pane.getChildren()。remove(index)存在具有相同坐标的点,则假设窗格中的唯一索引是我的点对象并且它们对应与我的链表索引。也许创建一个小组可以帮助这个项目?我不太了解组的目的,当我尝试用组对象而不是窗格对象替换代码时,点停止出现。

以下是我试图找出的代码,我将添加评论以帮助

public void start(Stage stage) {
    stage.setTitle("Dots!");
    // TODO: Your code starts here
    currentColor = Color.RED;
    dotList = new SinglyLinkedList<Dot>();
    Pane pane = new Pane();
    pane.setPrefSize(SIZE, SIZE);
    Dot dot = new Dot(50 ,50);
    dot.setFill(currentColor);
    //dotList.add(dot);
    //pane.getChildren().add(dot);
    Scene scene = new Scene(pane);
    stage.setScene(scene); // Place the scene in the stage

    pane.setOnKeyPressed(e -> {          
        switch (e.getCode()) {
          case DIGIT1: currentColor = Color.RED; break;
          case DIGIT2:  currentColor = Color.BLUE; break;
          case DIGIT3: currentColor = Color.GREEN; break;
          case NUMPAD1: currentColor = Color.RED; break;
          case NUMPAD2:  currentColor = Color.BLUE; break;
          case NUMPAD3: currentColor = Color.GREEN; break;
          default:
            break;
        }
      });
      pane.requestFocus(); 

      pane.setOnMouseClicked(e -> {
          double x = e.getX();
          double y = e.getY();
          int index = 0;
          int size = dotList.size();
          if (size !=0 && index < size) {
              Dot check = dotList.get(index);
              if (check.contains(x, y)) { 
                  dotList.remove(index);
                  pane.getChildren().remove(index); //This is may be wrong
                  size = dotList.size();
              }
              index++;
          }
          Dot newDot = new Dot(x ,y);
          dotList.add(newDot);
          pane.getChildren().add(newDot); ///This adds a new dot, this works


      });
      pane.requestFocus(); 

    // Your code ends here

    stage.show(); // makes the window visible to the user
}

1 个答案:

答案 0 :(得分:0)

当我编写代码时,我忘记完成迭代,因此它只能达到0的索引