如何使用JavaFX用新信息更新表格单元格?

如何使用JavaFX用新信息更新表格单元格?,java,javafx,cell,Java,Javafx,Cell,每当我单击一行时,我都想用新信息更新表。由于某种原因,当我点击它时,它没有做任何事情,并且出错了。知道我为什么不能这么做吗 public HierarchyItemTreeCellCallback(TreeView<Requirement> treeView, DataModel dataModelIn) { super(); treeViewParent = treeView; dataModel = dataModelIn; } @Overrid

每当我单击一行时,我都想用新信息更新表。由于某种原因,当我点击它时,它没有做任何事情,并且出错了。知道我为什么不能这么做吗

public HierarchyItemTreeCellCallback(TreeView<Requirement> treeView, DataModel dataModelIn)
{
    super();
    treeViewParent = treeView;
    dataModel = dataModelIn;
  }

  @Override
    public TreeCell<Requirement> call(TreeView<Requirement> param)
    {
    TreeCell<Requirement> cell = new HierarchyItemTreeCell();
    cell.addEventFilter(MouseEvent.MOUSE_PRESSED,new EventHandler<MouseEvent>()
    {
            @Override
            public void handle(MouseEvent event)
            {
                HierarchyTabController hierarchyTabController = new HierarchyTabController(dataModel);
                Requirement req1 = new Requirement("ID", "21", 1, REQUIREMENT_TYPE.SOFTWARE);
                hierarchyTabController.updateTableRow(req1);
            }
    });
    return cell;
  }
public HierarchyItemTreeCellCallback(TreeView TreeView,DataModel dataModelIn)
{
超级();
treeViewParent=treeView;
dataModel=dataModelIn;
}
@凌驾
公共TreeCell调用(TreeView参数)
{
TreeCell单元格=新的HierarchyItemTreeCell();
cell.addEventFilter(按下MouseEvent.MOUSE_,新建EventHandler())
{
@凌驾
公共无效句柄(MouseeEvent事件)
{
HierarchyTabController HierarchyTabController=新的HierarchyTabController(数据模型);
需求req1=新需求(“ID”,“21”,1,需求类型软件);
hierarchyTabController.updateTableRow(需求1);
}
});
返回单元;
}
以下是控制器逻辑:

public void updateTableRow(Requirement r)
{
    REQUIREMENT_TYPE reqType = REQUIREMENT_TYPE.SOFTWARE;
    Requirement req1 = new Requirement("ID", "21", 1, reqType);
    ObservableList<Requirement> list = FXCollections.observableArrayList(req1);
    name.setCellValueFactory(new PropertyValueFactory<>("name"));
    description.setCellValueFactory(new PropertyValueFactory<>("description"));
    tableView.getItems().setAll(list);
    tableView.setItems(list);
}
public void updateTableRow(要求r)
{
需求类型reqType=需求类型软件;
需求req1=新需求(“ID”、“21”、1、需求类型);
ObservableList=FXCollections.observableArrayList(req1);
名称。setCellValueFactory(新属性ValueFactory(“名称”);
说明.setCellValueFactory(新属性ValueFactory(“说明”);
tableView.getItems().setAll(列表);
tableView.setItems(列表);
}

每当我不从MouseEvent调用updateTableRow函数时,这种方法都会起作用。但是,当我尝试调用控制器并从MouseEvent更新值时,它不起作用。知道我做错了什么吗?

表格单元格?还是树细胞?树细胞@James_DOh是的@费边和我一样厌倦了这个问题。“我创建了控制器类的新实例。为什么
fxmloader
null注入的字段为空?”嗯,我想我无法创建控制器类的新实例?那你的工作是什么?如何更新新值@显然,您可以创建控制器类的新实例,但这是毫无用处的,因为您可能希望在实际控制器上调用
updateTableRow(…)
,而不是同一类的任意其他实例。当您实际加载FXML时,可以从
FXMLLoader
获取控制器。