我尝试过很多东西,但我还是想不通。我有一个包含“实体”的List
。我要去做所有这些并渲染它们。这完全没问题。问题是当我从不同的线程中删除此List
中的一个对象(实体)时。在这种情况下,方形(实体)不会消失,直到我调整窗口大小。
private List<Entity> entities = new ArrayList<Entity>();
public void render(Graphics g, ImageObserver obs) { //This function is called from my game loop (few hundred times per second..)
for (int i = 0; i < entities.size(); i++) {
entities.get(i).render(); //Calling the render function in the entity class
}
}
public void removeEntity(int index) { //This function is called from different thread
entities.remove(index); //Removing entity from the list
}
答案 0 :(得分:1)
您的render()
功能未被调用。您需要致电repaint()
来执行此操作。这将调用render()
并更新JFrame。调整窗口大小会自动重新绘制窗口,这就是为什么它仅在您调整大小后才能工作。