[问题] Java fx 多个物件添加并点击消除

楼主: qq0802qq (蒜蒜)   2020-06-18 01:26:45
※系统环境:NetBeans 8.2
※状况概述:
想要以for循环让画面出现30个circle,并以鼠标点击事件让被点击到的
消失,并且分数加一,最后得到分数。
但发现不能重复使用,想试着以阵列包起来再做添加,但反而无法做点击
事件,也抓不到分数的值。
谢谢各位
※程式码:
public class Test060511 extends Application {
private int score = 0;
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 800, 600);
Text t = new Text();
for (int i = 0; i < 30; i++) {
Circle circle=new Circle(15, Color.GOLD);
circle.setCenterX(Math.random() * 800);
circle.setCenterY(Math.random() * 600);
root.getChildren().add(circle);
circle.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("111");
root.getChildren().remove(circle);
score++;
t.setCache(true);
t.setX(10.0);
t.setY(30.0);
t.setFill(Color.RED);
t.setText("Score: " + score);
t.setFont(Font.font(null, FontWeight.BOLD, 16));
root.getChildren().add(t);
// System.out.println(score);
}
});
}
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
※错误讯息:
Exception in thread "JavaFX Application Thread"
java.lang.IllegalArgumentException: Children: duplicate children added:
parent = [email protected][styleClass=root]
※补充说明:
新手上路请各位多包涵了._.
作者: LZN (秋)   2020-06-18 09:38:00
看error讯息说有重复加入同个child, circle看来每次都有new所以推测是Text t在handle()中重复加入了.
作者: swallowcc (guest)   2020-06-18 09:51:00
是 text 重复 add 了没错, 刚改写了一下,参考看看https://pastebin.com/DRyJNi89
楼主: qq0802qq (蒜蒜)   2020-06-18 12:20:00
超感谢救援!!!谢谢(,,・ω・,,)

Links booklink

Contact Us: admin [ a t ] ucptt.com