比较搜索中的SimpleStringProperty

时间:2017-03-05 17:04:06

标签: java javafx

我有一个填充在场景上的TableView。我正在搜索对象属性以查看它们是否匹配,并且该属性正在返回StringProperty [value:3]。我只是想看看完成这种比较的正确方法。

以下是代码:

@FXML
public void searchParts(ActionEvent event) throws IOException{
  System.out.println("Searching for part: " + searchPart.getText());
  String partSearchable = searchPart.getText();
      for (int i = 0; i < parts.size(); i++) {
         System.out.println(parts.get(i).nameProperty());           

          if (parts.get(i).nameProperty().equals(new SimpleStringProperty(partSearchable))) {
            partsList.clear();
            partsList.add(parts.get(i));
            populateTable();
            break;
         }  
     }
    partsList.clear();
    populateTable();
}

以下是零件类中的getter方法:

public SimpleStringProperty nameProperty(){
    return new SimpleStringProperty(name.get());
}

进行这种比较的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

首先,您不应在属性访问器方法中创建新属性。您还应该将类型公开为StringProperty,而不是SimpleStringProperty

执行:

public StringProperty nameProperty() {
    return name ;
}

如果要执行比较,请将属性的内容与感兴趣的字符串进行比较:

if (parts.get(i).nameProperty().get().equals(partSearchable)) { ... }

如果您还在班级中定义了通常的get方法:

public final String getName() {
    return nameProperty().get();
}

// and, though it's irrelevant to this question, usually also 
public final void setName(String name) {
    nameProperty().set(name);
}

当然你可以做到

if (parts.get(i).getName().equals(partSearchable)) { ... }

答案 1 :(得分:0)

这样做:

if (parts.get(i).getName().equals(partSearchable)) {