【问题标题】:javafx replacing a row in TableView from a generated stringjavafx 从生成的字符串中替换 TableView 中的一行
【发布时间】:2016-08-16 18:45:26
【问题描述】:

我是 Java 和 JavaFX 的新手,我正在尝试检查 Tableview 中是否存在重复项,如果是这种情况,我想用一组新数据替换它。

所以本质上我是在尝试遍历 TableView 中的数据并将其与某些东西进行比较。更准确地说,我想将第一列上的字符串值压缩为新字符串。我做了一些研究,发现最常见的过滤数据解决方案是使用FilteredList,但这不会返回我的原始项目集。

我当前的代码如下所示:

@FXML private TableView<STable> TableV;
public void Replace(String s){
    ObservableList<STable> getCurrentData;
    for(int i = 0; i < getCurrentData.size(); i++){
        // Here is where I get Stuck I've tried: 
        //TableV.getSelectionModel().getSelectedItem().getCajas();
        //getCurrentData.get(i)
        }
    }

注意:STable 是一个类,其中包含每个列的所有 setter 和 getter,我还设置了 CellFactory。

任何关于如何做到这一点的指导都会很棒!

【问题讨论】:

    标签: javafx tableview


    【解决方案1】:

    基本上,您只需遍历数据项,并将表示第 1 列内容的值与新字符串进行比较。如果两个值相等,则更新 dataModel 中的值:

    (我将 STable 替换为 YourData,因为我发现 dataModel 的名称有点混乱)

    for (YourData data : tableView.getItems()) {
        if (data.getColumOne().equals(textToCompare)) {
           data.setColumnOne("newText");
        }
    }
    

    或者如果你想替换行:

    for (int idx = 0; idx < tableView.getItems().size(); idx++) {
        YourData data = tableView.getItems().get(idx);
        if (data.getColumnOne().equals(textToCompare)) {
           tableView.getItems().set(idx, someOtherData);
           return;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2014-11-21
      • 2012-11-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2021-09-26
      相关资源
      最近更新 更多