Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从ArrayList中删除的图像仍在显示_Java_Image_Arraylist_Javafx - Fatal编程技术网

Java 从ArrayList中删除的图像仍在显示

Java 从ArrayList中删除的图像仍在显示,java,image,arraylist,javafx,Java,Image,Arraylist,Javafx,我正在制作一个2D游戏,其中玩家的精灵存储在数组列表中。由于玩家有多个状态,我想在使用时删除以前的状态。我的ArrayList为: List<Image> x = new ArrayList(); 但这些图像仍然显示,而不是下一个图像集 可能是某种缓存吗?如果是,如何删除此缓存以便应用新图像 我的精灵图像声明如下(显示一个图像,但所有图像都类似): 我不知道我是否理解你 例如,您使用要在图像视图上设置的列表的第一个元素(设置正确),然后从列表中删除该元素 此时,您是否希望图像也从I

我正在制作一个2D游戏,其中玩家的精灵存储在数组列表中。由于玩家有多个状态,我想在使用时删除以前的状态。我的ArrayList为:

List<Image> x = new ArrayList();
但这些图像仍然显示,而不是下一个图像集

可能是某种缓存吗?如果是,如何删除此缓存以便应用新图像

我的精灵图像声明如下(显示一个图像,但所有图像都类似):


我不知道我是否理解你

例如,您使用要在
图像视图
上设置的列表的第一个元素(设置正确),然后从列表中删除该元素

此时,您是否希望图像也从
ImageView
中删除

为什么要删除

该列表包含对对象(指针)的引用。从列表中设置图像时,引用将传递到ImageView,因此现在它也将指向该对象。如果从列表中删除引用,则无所谓,
ImageView
仍将指向该引用

因此,您可以在删除元素后显式调用
setImage
,或者使用
observeList
并将图像设置为remove(类似以下内容):

ObservableList iList=FXCollections.observableArrayList();
iList.addListener(新的ListChangeListener()
{
@凌驾

public void onChanged(javafx.collections.ListChangeListener.change)从列表中删除图像后,是否调用了someImageView.setImage并对其进行休息?
for(int i = 0; i < 6; i++)
    x.remove(y);
Image someImg = new Image("path", true, false, true);
ObservableList<Image> iList = FXCollections.observableArrayList();
iList.addListener(new ListChangeListener<Image>()
{
    @Override
    public void onChanged(javafx.collections.ListChangeListener.Change<? extends Image> change) {
        while(change.next())
        {
            if(change.wasRemoved())
                imgView.setImage(iList.get(0));
        }
    });
}