2015-04-19 27 views
0

我正在研究创建一个应用程序的代码,该应用程序在我点击的任何点绘制点。我是JavaFX的新手,我理解如何将对象添加到屏幕的一般原则,除了我无法弄清楚如何删除项目外,其他所有工作都可以使用。我目前正在通过一个LinkedList进行查看,如果具有相同坐标的点存在,我使用pane.getChildren()。remove(index),这是假定窗格中唯一的索引是我的点对象,它们与我的链接列表索引。也许创建一个团队可以帮助这个项目?我不太了解一个组的用途,当我试图用一个组对象而不是一个窗格对象替换代码时,点不再出现。JavaFX分组和删除节点

这里是我试图找出的代码,我会添加注释,以帮助

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 
} 
+0

我可以制作一组点并将场景设置为组或其他?我明白,该组可以容纳我所有的点对象,但我不明白如何设置场景以查看组中的对象 –

回答

0

我忘了完成我的迭代时,我的代码,以便它只是触及0

指数