2016-04-23 24 views
0

Im新的Java和JavaFX和Im试图检查它有一个tableview中的重复,如果是这种情况,我想用一组新的数据。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) 
     } 
    } 

注:稳定是有所有的getter和setter方法为每一列的一类,我也得到了CellFactory成立。

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

回答

0

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

(我换成稳定,YourData,因为我发现名称为数据模型有点混乱)

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; 
    } 
} 
+0

谢谢如此多!像奇迹一样工作! –