gpt4 book ai didi

java - ListView 选择模型的 validator ?

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:00 25 4
gpt4 key购买 nike

我正在尝试做到这一点,因此需要进行选择才能继续,我想知道是否可以使用 ControlsFX Validator 和 ValidationSupport 来实现此目的。

public static void test(ValidationSupport support, ListView listView) {
Validator<ObservableListWrapper> validator = (control, value) -> {
boolean condition = listView.getSelectionModel().getSelectedItem() == null;
return ValidationResult.fromMessageIf(control, "Please select an item", Severity.ERROR, condition);
};
support.registerValidator(listView, true, validator);
}

这不起作用。选择列表中的一个项目似乎不会以任何方式影响这一点。我认为这是因为我使用的是 listView 参数而不是值一,但我不知道如何获取值一以与 ListView 的选择模型相对应。

最佳答案

ValidationSupport使用ValueExtractor提取一个可观察的值,当该值发生变化时,将进行重新验证。 ValueExtractor使用ListView#itemsProperty默认为所有 ListView s,这意味着ValidationSupport仅当 itemsProperty 时才会重新验证被改变了。为了更改 ListView 的所有实例,您可以使用静态方法 addObservableValueExtractor 设置可观察值提取器像这样:

ValueExtractor.addObservableValueExtractor(c -> c instanceof ListView, 
c -> ((ListView) c).getSelectionModel().selectedItemProperty());

如果您想针对 ListView 的特定实例更改它你可以尝试这样做:

ValueExtractor.addObservableValueExtractor(c -> c == listView, 
c -> ((ListView) c).getSelectionModel().selectedItemProperty());

使用 ListView<File> 的示例:

ListView<File> listView = new ListView<>();
ValidationSupport support = new ValidationSupport();
ValueExtractor.addObservableValueExtractor(c -> c == listView,
c -> ((ListView<File>) c).getSelectionModel().selectedItemProperty());
Validator<File> validator = new Validator<>() {
@Override
public ValidationResult apply(Control control, File file) {
boolean condition = file == null;
return ValidationResult.fromMessageIf(control, "Please select a file", Severity.ERROR, condition);
}
};
support.registerValidator(listView, true, validator);

关于java - ListView 选择模型的 validator ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com