Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Model view controller 如何在JavaFX中使用ObservableList_Model View Controller_Binding_Javafx_Observable_Observablelist - Fatal编程技术网

Model view controller 如何在JavaFX中使用ObservableList

Model view controller 如何在JavaFX中使用ObservableList,model-view-controller,binding,javafx,observable,observablelist,Model View Controller,Binding,Javafx,Observable,Observablelist,我试图使用ObservableList来帮助我在正在构建的新应用程序中协调MVC框架。我有一个LineData对象,其中包含在屏幕上绘制线条所需的信息,我希望在程序后端维护一个LineData列表。然后,每当在后端绘制LineData列表时,我希望通过前端在屏幕上绘制相应的线。我相信要做到这一点,我需要在前端有一个与后端列表绑定的列表,然后我需要在这个列表上有某种类型的监听器,触发新数据转换成线并绘制?我只是不知道该怎么做——任何帮助都将不胜感激!谢谢 您可以“手动”完成此操作,在可观察列表中注

我试图使用ObservableList来帮助我在正在构建的新应用程序中协调MVC框架。我有一个LineData对象,其中包含在屏幕上绘制线条所需的信息,我希望在程序后端维护一个LineData列表。然后,每当在后端绘制LineData列表时,我希望通过前端在屏幕上绘制相应的线。我相信要做到这一点,我需要在前端有一个与后端列表绑定的列表,然后我需要在这个列表上有某种类型的监听器,触发新数据转换成线并绘制?我只是不知道该怎么做——任何帮助都将不胜感激!谢谢

您可以“手动”完成此操作,在
可观察列表中注册侦听器,并根据需要从
窗格的子列表中添加或删除元素。大概是

public class Model {

    // ...

    public ObservableList<LineData> getLineData() { ... }

    // ...

}
但请注意,框架具有用于此目的的内置功能:

public class MyController {

    Model model ;

    @FXML
    private Pane pane ;

    public void initialize() {
        Bindings.bindContent(pane.getChildren(),
            EasyBind.map(model.getLineData(), this::createLineForLineData));

        // ...
    }

    private Line createLineForLineData(LineData lineData) { ... }

}
public class MyController {

    Model model ;

    @FXML
    private Pane pane ;

    public void initialize() {
        Bindings.bindContent(pane.getChildren(),
            EasyBind.map(model.getLineData(), this::createLineForLineData));

        // ...
    }

    private Line createLineForLineData(LineData lineData) { ... }

}