JavaFX - 无法刷新/更新ListView

时间:2014-05-20 04:34:31

标签: java listview javafx removing-whitespace

好吧,看来我被其中一个最简单的ListView实现所困扰。几天后,我发现无法正确重新分配JavaFX ListView。我正在努力使EntityView完全动态化,能够在需要时通过ContextMenu删除元素。所以我有一个由ArrayList填充的ListView,我们将其称为“可渲染”。当您在上下文菜单中选择“删除”时,它会从可渲染列表中删除实体,这也恰好是我右键单击的列表单元格的“值”。之后,我希望刷新ListView并立即删除不存在的单元格。因此,通过使用新的可渲染列表创建一个新的ObservableList(删除正确的实体并且工作正常),我在ListView中设置了项目,这些项目都是插件。在这种情况下,我可以将列表设置为null,这将删除所有元素。但我无法使用新数组重置列表,并删除现在丢失的实体。有人指出我正确的方向!

This is the EntityView list

当我使用上面提到的方法时,它会从列表中删除它,但不会在视觉上删除它。列表底部会出现一个无法使用的单元格,其名称有其名称。

Here is a picture of the engine

public void createContextMenu(final Entity curr, MouseEvent me){
    MenuItem[] items = {new MenuItem("EDIT TYPE"), new MenuItem("REMOVE")};

    ContextMenu menu = new ContextMenu(items);

    menu.show(list, me.getScreenX(), me.getScreenY());

    items[1].setOnAction(new EventHandler<ActionEvent>(){
        public void handle(ActionEvent arg0) {
            CanvasTab tab = (CanvasTab) core.canvasTabbedPane.getSelectionModel().getSelectedItem();
            Kanvas k = tab.canvas;

            k.renderable.remove(curr);
            System.out.println(k.renderable);

            k.redraw();

            EntityView.this.list.getItems().remove(curr);

            ObservableList<Entity> temp = FXCollections.observableList(k.renderable);
            EntityView.this.list.setItems(temp);
        }   
    });
}

这是上下文菜单:

enter image description here

0 个答案:

没有答案