在 JavaFX 中修改子节点
Modifying a Child Node in JavaFX
我有一个问题,我认为它是基于我对 OOP/programming 的一般概念理解不佳,但它已经出现,特别是在 JavaFX 场景中。
我想将一个子节点添加到父节点,然后更新该子节点,并查看反映的更新,而不必将其删除并重新添加到父节点。这可能吗?更具体地说,我有一个 Pane(父级)和一个 ImageView(子级),我想将它们添加到父级,然后再修改。
Pane pane = new Pane();
ImageView picture = new ImageView("dog.png");
pane.getChildren().add(picture);
//now I'm seeing a picture of a dog in my Pane
picture = new ImageView("cat.png");
//So I've reassigned "picture" but am I still seeing a dog?
pane.getChildren().remove(picture);
pane.getChildren().add(picture);
//Am I seeing a cat now?
如果这不清楚或太基础,我深表歉意。如果需要,我可以尝试澄清。感谢任何帮助。
重复使用现有的 ImageView
ImageView 是图像的视图。
您无需创建新视图即可查看新图像,您可以直接更改正在查看的图像。
ImageView picture = new ImageView("dog.png");
Pane pane = new Pane(picture);
// . . .
// use alchemy to transmute a dog into a cat.
// . . .
picture.setImage(new Image("cat.png"));
创建并使用新的 ImageView
您可以使它按照您最初编码的方式工作,尽管这不是最理想的。这里的变化是你必须使用图片参考删除狗图像视图 before 你将图片参考分配给新的图像视图(而不是像你在问题中所做的那样)。
Pane pane = new Pane();
ImageView picture = new ImageView("dog.png");
pane.getChildren().add(picture);
//now I'm seeing a picture of a dog in my Pane
// . . .
// remove the dog before you reassign the picture to a cat.
pane.getChildren().remove(picture);
picture = new ImageView("cat.png");
//So I've reassigned "picture" and can now see a cat, not a dog.
pane.getChildren().add(picture);
我有一个问题,我认为它是基于我对 OOP/programming 的一般概念理解不佳,但它已经出现,特别是在 JavaFX 场景中。
我想将一个子节点添加到父节点,然后更新该子节点,并查看反映的更新,而不必将其删除并重新添加到父节点。这可能吗?更具体地说,我有一个 Pane(父级)和一个 ImageView(子级),我想将它们添加到父级,然后再修改。
Pane pane = new Pane();
ImageView picture = new ImageView("dog.png");
pane.getChildren().add(picture);
//now I'm seeing a picture of a dog in my Pane
picture = new ImageView("cat.png");
//So I've reassigned "picture" but am I still seeing a dog?
pane.getChildren().remove(picture);
pane.getChildren().add(picture);
//Am I seeing a cat now?
如果这不清楚或太基础,我深表歉意。如果需要,我可以尝试澄清。感谢任何帮助。
重复使用现有的 ImageView
ImageView 是图像的视图。
您无需创建新视图即可查看新图像,您可以直接更改正在查看的图像。
ImageView picture = new ImageView("dog.png");
Pane pane = new Pane(picture);
// . . .
// use alchemy to transmute a dog into a cat.
// . . .
picture.setImage(new Image("cat.png"));
创建并使用新的 ImageView
您可以使它按照您最初编码的方式工作,尽管这不是最理想的。这里的变化是你必须使用图片参考删除狗图像视图 before 你将图片参考分配给新的图像视图(而不是像你在问题中所做的那样)。
Pane pane = new Pane();
ImageView picture = new ImageView("dog.png");
pane.getChildren().add(picture);
//now I'm seeing a picture of a dog in my Pane
// . . .
// remove the dog before you reassign the picture to a cat.
pane.getChildren().remove(picture);
picture = new ImageView("cat.png");
//So I've reassigned "picture" and can now see a cat, not a dog.
pane.getChildren().add(picture);