java - 比较搜索中的 SimpleStringProperty

标签 java javafx

我有一个填充在场景中的 TableView。我正在搜索对象属性以查看它们是否匹配,并且该属性返回 StringProperty [值: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());
}

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

最佳答案

首先,您不应在属性访问器方法中创建新属性。您还应该将该类型公开为 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)) { ... }

关于java - 比较搜索中的 SimpleStringProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611296/

相关文章:

java - 全局配置ObjectMapper(通过@Bean或smth)从 "data"节点解析

JavaFX ImageView适合容器

3d - JavaFX 8 3D场景交点

java - 移动并设置折线图中 XYChart.Data 节点的值

java - 如何检索我域中的所有用户

java - 关于浏览器 session 和 session ID 的一些问题/谜团?

java - 我们可以将 SimpleDateFormat 对象声明为静态对象吗

java - 使用 JAX-RS Resteasy 和 ContainerRequestFilter/ContainerResponseFilter 记录请求

ubuntu - 显示对话框后无法调整 javafx 阶段的大小

java - 制作一个jar文件,应用程序被java安全阻止