javafx动态填充列表视图
javafx populate listview dynamically
这里是 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 还是使用某种回调?我应该在单独的线程中执行此操作吗?
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);
}
});
}
...
}
这里是 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 还是使用某种回调?我应该在单独的线程中执行此操作吗?
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);
}
});
}
...
}