gpt4 book ai didi

java - 更改javaFX中ImageView中的图像

转载 作者:行者123 更新时间:2023-12-01 20:26:24 24 4
gpt4 key购买 nike

我正在寻找一个示例,当某个变量x时,需要改变动态图像x.png 将值 1 放入 y.png 中,当该变量返回到 0 时恢复旧图像。如果这可能的话,如何实现?感谢您的帮助

我正在尝试使用此代码,但没有成功...

这是我的 Controller 类

public class FXMLDocumentController implements Initializable {

@FXML
private ImageView myImage;

@Override
public void initialize(URL url, ResourceBundle rb) {
Random random = new Random();


while (true) { // <-- this is the problem how i can do that without while(true)??
int x = random.nextInt(1);
if (x == 0) {
Image image = new Image(getClass().getResource("x.png").toExternalForm());
myImage.setImage(image);
}
if (x == 1) {
Image image = new Image(getClass().getResource("y.png").toExternalForm());
myImage.setImage(image);
}

}

}

}

最佳答案

一个相当强大的解决方案是在 IntegerPropertyImageViewimageProperty 之间使用绑定(bind):

ImageView im = new ImageView();
IntegerProperty intValue = new SimpleIntegerProperty();
List<Image> images = Arrays.asList(new Image(getClass().getResource("aa.png").toString()),
new Image(getClass().getResource("bb.png").toString()));

im.imageProperty().bind(Bindings.createObjectBinding(() -> images.get(intValue.getValue()),
intValue));

图像被放入List(或数组,或任何可索引容器)中,然后绑定(bind)返回相应索引上的Image

<小时/>

要使图像闪烁,您可以启动一个新的线程:

Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
Random random = new Random();
while (true) {
Thread.sleep(50);
intValue.set(random.nextInt(images.size()));
}
}
};

Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();

关于java - 更改javaFX中ImageView中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43844808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com