当前位置: 首页 > 知识库问答 >
问题:

Javafx:使用GUI中的选择框更新单元格不起作用

茅星雨
2023-03-14

我在使用javafx创建的Tableview中遇到问题。我在tabel的fxml文件上设置了etitable="true",然后在控制器中执行

@FXML
private TableColumn<ARule,Object> rankCol;

<代码>rankCol。setCellValueFactory(新属性ValueFactory

要在列秩中创建选项框以更改属性的值。ARule有一个属性字段以及getter和setter:

private SimpleObjectProperty label;
public SimpleObjectProperty labelProperty() {
    return label;
}
public void setLabel(Object label) {
    this.label.set(label);
}
public Object getLabel(){
    return this.label.getValue();
}

函数Main。getlabelSample()重新运行这个填充了字符串或整数的对象

private static final ObservableList<Object> labelSample = FXCollections.observableArrayList();

问题是,在接口中,我可以编辑列,并且它在labelSample列表中显示正确的值,问题是它不会更改ARule对象的值,这通过缺少setOnEditCommit处理程序的调用而突出显示。GUI上的值是选定的新值,但表中项目上保存的值是旧值。

我还有一个单独的按钮来更改所选行上该列的值,如果我触发它,值会更改为“真实”(在GUI和模型上)。

代码中可能有什么错误?

共有2个答案

丌官嘉福
2023-03-14

在代码行中找到答案:

rankCol.setOnEditCommit(e -> {System.out.println("something happens!");});

出于某种原因,覆盖更新单元格的默认行为,将代码更改为

rankCol.setOnEditCommit(e -> {
        e.getTableView().getItems().get(e.getTablePosition().getRow()).setLabel(e.getNewValue());
        System.out.println("Something happens!");});

解决了问题。目前我不知道为什么会这样。

郜俊健
2023-03-14

列的默认编辑提交行为设置为onEditCommit属性。如果你打电话

rankCol.setOnEditCommit(...);

然后将此属性设置为其他属性,即删除默认行为。

如果要向默认值添加其他行为,请使用addEventHandler(…) 而不是setOnEditCommit(…)

rankCol.addEventHandler(TableColumn.editCommitEvent(), e -> {
    System.out.println("Something happens");
});
 类似资料:
  • 我最近开始用JavaFX(jdk 1.8.0_66)编程一个应用程序。我有几个表(视图),其中之一应该是关于所有'订阅'对象的概述。因此,我创建了表视图,并用一个可观察的列表填充它: 例如,我的桌子有点像这样: 现在,每当我向列表中添加参与者时,相应单元格中的数字应该增加一个,但不会增加——除非我重新启动应用程序。希望你们中有人能帮助我/解释我有什么问题。

  • 问题内容: 我有一个选择 但是当两个c.CollegeName == collegeSelection.CollegeName都匹配时,仍未选择该项目。文档似乎没有帮助。有任何想法吗? 问题答案: 应该在标记中使用,而不是在标记中使用。请仔细阅读其文档和示例。 因为指令对所选选项的确定基于。因此,一旦删除,您的代码就可以使用。 我创建了一个非常简单的插件来演示指令中的“选定”功能。 更多细节: A

  • 我想用复选框显示所有行,所有列,因为我只想要true/false值。但是我想访问单个单元格值,即每个复选框都可以选中/不选中。见下图。 根据我的知识,当我勾选复选框时,行的所有复选框都将被选中。那么,我可以选中/取消选中单个框吗?

  • 问题内容: 我有一个JTable,我想用自定义渲染器尝试检查isEnabled()的所有禁用的复选框单元变灰,然后更改背景颜色,但仍然无法使用。有什么建议么?谢谢!!! 问题答案: 如“ 概念:编辑器和渲染器 ”中所述,“通常使用单个单元格渲染器来绘制包含相同类型数据的所有单元格。” 您需要维护表模型中的enabled状态。 附录:作为一个具体示例,此示例中的数据模型是一组简单的Date实例。ge

  • 我试图使用PHP从我拥有的城镇列表中随机选择一个XML元素,但是每当我觉得我可能已经修复了它时,我都会得到同样的错误。 我对PHP相当陌生,已经克服了许多障碍,但这是一个我无法理解的障碍。 错误是: 致命错误:在/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php

  • 我有几个复选框。基于JSON响应(通过ajax-requests加载数据),我使用.prop()函数设置和重置复选框的默认值。问题是,如果我手动改变它们,它们显然不会改变这种行为。我不能通过$('#checkbox:checked').val()传递复选框的值,控制台日志显示为'undefined'。这是因为.prop()函数吗?如何获取选中复选框的值? 如果你需要更多的信息,我很乐意提供。这里有