我有一个填充在场景上的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());
}
进行这种比较的正确方法是什么?
答案 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)) {