JavaFX的。使用TableView绑定非可观察值的列表

时间:2016-02-29 10:11:01

标签: javafx tableview observable

我编写了使用Tableview的应用程序,我想在其中表示和编辑数据列表。

我有数据模型。像

这样的东西
public class CModel 
{
    private List<CItem> m_lstItems;

    public List<CItem> getList()
    {
        return m_lstItems;
    }

}

public class CItem 
{

    private String m_sName;
    private String m_sType;

    public void setName(String s)
    {
        m_sName = s;
    }

    public String getName()
    {
        return new String(m_sName);
    }

}

如果我需要绑定我的数据模型,我可以创建observableList()。但这不允许我观察项目编辑。为了使编辑成为可能,我需要从CItem继承Observable成员。如果我将其声明为Property TableView,则会观察项目更改。

问题是如果CModel是纯数据模型,我不应该从Observable继承它(因为数据及其视图应该是分开的)。

如何用Observable或最佳方法包装每个列表项?

1 个答案:

答案 0 :(得分:-1)

对于每个列,创建一个CellValueFactory,它将您的POJO属性包装在JavaFX属性中。下面的示例在具有名为name的String属性的虚构Person对象上执行此操作:

TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getName()));