Java ListView选择模型的验证程序?
我正在尝试进行选择,因此需要进行选择,我想知道是否可以使用ControlsFX Validator和ValidationSupport实现这一点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
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);