作者qq0802qq (蒜蒜)
看板java
标题[问题] Java fx 多个物件添加并点击消除
时间Thu Jun 18 01:26:45 2020
※系统环境: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 = Group@76bfa144[styleClass=root]
※补充说明:
新手上路请各位多包涵了._.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.214.183.185 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1592414807.A.789.html
1F:→ LZN: 看error讯息说有重复加入同个child, circle看来每次都有new 06/18 09:38
2F:→ LZN: 所以推测是Text t在handle()中重复加入了. 06/18 09:39
3F:推 swallowcc: 是 text 重复 add 了没错, 刚改写了一下,参考看看 06/18 09:51
5F:→ qq0802qq: 超感谢救援!!!谢谢(,,・ω・,,) 06/18 12:20