2

Javafx 新手在这里.. 我需要有关填充列表视图的最佳方法的帮助。这是我的设置..

我正在开发应该跟踪在我的环境中运行的虚拟机数量的 UI 工具。每当机器启动或关闭时,我都会收到回调。如何根据该数据更新列表视图。控制器代码 -

public class MainOverviewController implements Initializable
{
    @FXML
    private ListView<String> devicesListView; // Points to the listview

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    ObservableList<String> items = FXCollections.observableArrayList("Machines connected");

    devicesListView.setItems(items);

    ...
}

我收到虚拟机通知的回调代码 -

class VMChangeListener extends vmlistener
{
...

@Override
public void vmStarted(VM vm)
{
    vms.add(vm);
}

@Override
public void vmDisconnected(VM vm)
{
    vms.remove(vm);
}

现在我的问题是,从 vmStarted 和 vmDisconnected 函数更新 observablelist、items 的最佳方法是什么。我可以将 observablelist 传递给 VMChangeListener 或使用某种回调?我应该在单独的线程中执行此操作吗?

4

1 回答 1

2
public class MainOverviewController extends vmListener implements Initializable
{
    @FXML
    private ListView<VM> devicesListView; // Points to the listview

    @Override
    public void vmStarted(final VM vm)
    {
        Platform.runLater(new Runnable()
        {
            @Override
            public void run()
            {
                devicesListView.getItems().add(vm);
            }
        });
    }

    @Override
    public void vmDisconnected(final VM vm)
    {
        Platform.runLater(new Runnable()
        {
            @Override
            public void run()
            {
                devicesListView.getItems().remove(vm);
            }
        });
    }

    ...
}
于 2015-07-14T13:26:19.323 回答