Java ListView选择模型的验证程序?

Java ListView选择模型的验证程序?,java,validation,javafx,controlsfx,Java,Validation,Javafx,Controlsfx,我正在尝试进行选择,因此需要进行选择,我想知道是否可以使用ControlsFX Validator和ValidationSupport实现这一点 public static void test(ValidationSupport support, ListView listView) { Validator<ObservableListWrapper> validator = (control, value) -> { boolean condition

我正在尝试进行选择,因此需要进行选择,我想知道是否可以使用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){
验证器验证器=(控件,值)->{
布尔条件=listView.getSelectionModel().getSelectedItem()=null;
返回ValidationResult.fromMessageIf(控制“请选择项目”、严重性、错误、条件);
};
support.registerValidator(listView、true、validator);
}

这是行不通的。在列表中选择一个项目似乎不会产生任何影响。我认为这是因为我使用的是listView参数而不是值1,但我不知道如何使值1与列表视图的选择模型相对应

ValidationSupport
使用
ValueExtractor
提取一个可观察值,当发生更改时,将进行重新验证
ValueExtractor
使用
ListView#itemsProperty
作为所有
ListView
的默认值,这意味着
ValidationSupport
仅在更改
itemsProperty
时才会重新验证。 为了对所有
ListView
实例进行更改,您可以使用静态方法
addobservevalueextractor
设置一个可观察值提取器,如下所示:

ValueExtractor.addObservableValueExtractor(ListView的c->c实例),
c->((ListView)c.getSelectionModel().SelectEditeProperty());
如果要为
ListView
的特定实例更改它,可以尝试执行以下操作:

ValueExtractor.addObservableValueExtractor(c->c==listView,
c->((ListView)c.getSelectionModel().SelectEditeProperty());
使用
ListView
的示例:

ListView ListView=新建ListView();
ValidationSupport=新的ValidationSupport();
ValueExtractor.addObservableValueExtractor(c->c==listView,
c->((ListView)c.getSelectionModel().SelectEditeProperty());
验证器验证器=新验证器(){
@凌驾
公共验证结果应用(控件、文件){
布尔条件=file==null;
返回ValidationResult.fromMessageIf(控制“请选择文件”、严重性.ERROR、条件);
}
};
support.registerValidator(listView、true、validator);

验证支持
使用
值提取器
提取一个可观察值,当发生更改时,将进行重新验证
ValueExtractor
使用
ListView#itemsProperty
作为所有
ListView
的默认值,这意味着
ValidationSupport
仅在更改
itemsProperty
时才会重新验证。 为了对所有
ListView
实例进行更改,您可以使用静态方法
addobservevalueextractor
设置一个可观察值提取器,如下所示:

ValueExtractor.addObservableValueExtractor(ListView的c->c实例),
c->((ListView)c.getSelectionModel().SelectEditeProperty());
如果要为
ListView
的特定实例更改它,可以尝试执行以下操作:

ValueExtractor.addObservableValueExtractor(c->c==listView,
c->((ListView)c.getSelectionModel().SelectEditeProperty());
使用
ListView
的示例:

ListView ListView=新建ListView();
ValidationSupport=新的ValidationSupport();
ValueExtractor.addObservableValueExtractor(c->c==listView,
c->((ListView)c.getSelectionModel().SelectEditeProperty());
验证器验证器=新验证器(){
@凌驾
公共验证结果应用(控件、文件){
布尔条件=file==null;
返回ValidationResult.fromMessageIf(控制“请选择文件”、严重性.ERROR、条件);
}
};
support.registerValidator(listView、true、validator);