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