绑定日期选择器
Binding DatePicker
我想要 bindBiderectional() DatePicker。这是我做的
@FXMLController("title.fxml")
public class Controller {
@FXML
private DatePicker dp_date_from;
@Inject
private Model model;
...
@PostConstruct
public void init(){
...
dp_date_from.valueProperty().bindBidirectional(model.dateFromProperty());
...
}
型号Class
@FlowScoped
public class Model {
private ObjectProperty<LocalDate> dateFrom;
public ObjectProperty<LocalDate> dateFromProperty() {
return dateFrom;
}
...
}
它抛出一个错误:
io.datafx.controller.FxmlLoaderException:java.lang.reflect.InvocationTargetException
这可能是什么原因?
错误,是在应用程序本身中抛出的,它不会在控制台中写入任何内容。我已经取消了代码,当涉及到第 dp_date_from.valueProperty...
行时,它会抛出异常:
public <T> ViewContext<T> createByController(Class<T> controllerClass, String fxmlName, ViewConfiguration viewConfiguration, Object... viewContextResources) throws FxmlLoadException {
try {
Object e = controllerClass.newInstance();
ViewMetadata metadata = new ViewMetadata();
FXMLController controllerAnnotation = (FXMLController)controllerClass.getAnnotation(FXMLController.class);
if(controllerAnnotation != null && !controllerAnnotation.title().isEmpty()) {
metadata.setTitle(controllerAnnotation.title());
}
if(controllerAnnotation != null && !controllerAnnotation.iconPath().isEmpty()) {
metadata.setGraphic(new ImageView(controllerClass.getResource(controllerAnnotation.iconPath()).toExternalForm()));
}
FXMLLoader loader = this.createLoader(e, fxmlName, viewConfiguration);
Node viewNode = (Node)loader.load();
ViewContext context = new ViewContext(viewNode, e, metadata, viewConfiguration, viewContextResources);
context.register(e);
context.register("controller", e);
this.injectFXMLNodes(context);
context.getResolver().injectResources(e);
Method[] var11 = e.getClass().getMethods();
int var12 = var11.length;
for(int var13 = 0; var13 < var12; ++var13) {
Method method = var11[var13];
if(method.isAnnotationPresent(PostConstruct.class)) {
method.invoke(e, new Object[0]);
}
}
return context;
} catch (Exception var15) {
throw new FxmlLoadException(var15);
}
}
谢谢,错误是因为我没有初始化dateFrom。我刚刚将这部分添加到模型 class
public ObjectProperty<LocalDate> dateFromProperty() {
if(dateFrom == null){
dateFrom = new SimpleObjectProperty<>();
}
return dateFrom;
}
感谢大家
我想要 bindBiderectional() DatePicker。这是我做的
@FXMLController("title.fxml")
public class Controller {
@FXML
private DatePicker dp_date_from;
@Inject
private Model model;
...
@PostConstruct
public void init(){
...
dp_date_from.valueProperty().bindBidirectional(model.dateFromProperty());
...
}
型号Class
@FlowScoped
public class Model {
private ObjectProperty<LocalDate> dateFrom;
public ObjectProperty<LocalDate> dateFromProperty() {
return dateFrom;
}
...
}
它抛出一个错误:
io.datafx.controller.FxmlLoaderException:java.lang.reflect.InvocationTargetException
这可能是什么原因?
错误,是在应用程序本身中抛出的,它不会在控制台中写入任何内容。我已经取消了代码,当涉及到第 dp_date_from.valueProperty...
行时,它会抛出异常:
public <T> ViewContext<T> createByController(Class<T> controllerClass, String fxmlName, ViewConfiguration viewConfiguration, Object... viewContextResources) throws FxmlLoadException {
try {
Object e = controllerClass.newInstance();
ViewMetadata metadata = new ViewMetadata();
FXMLController controllerAnnotation = (FXMLController)controllerClass.getAnnotation(FXMLController.class);
if(controllerAnnotation != null && !controllerAnnotation.title().isEmpty()) {
metadata.setTitle(controllerAnnotation.title());
}
if(controllerAnnotation != null && !controllerAnnotation.iconPath().isEmpty()) {
metadata.setGraphic(new ImageView(controllerClass.getResource(controllerAnnotation.iconPath()).toExternalForm()));
}
FXMLLoader loader = this.createLoader(e, fxmlName, viewConfiguration);
Node viewNode = (Node)loader.load();
ViewContext context = new ViewContext(viewNode, e, metadata, viewConfiguration, viewContextResources);
context.register(e);
context.register("controller", e);
this.injectFXMLNodes(context);
context.getResolver().injectResources(e);
Method[] var11 = e.getClass().getMethods();
int var12 = var11.length;
for(int var13 = 0; var13 < var12; ++var13) {
Method method = var11[var13];
if(method.isAnnotationPresent(PostConstruct.class)) {
method.invoke(e, new Object[0]);
}
}
return context;
} catch (Exception var15) {
throw new FxmlLoadException(var15);
}
}
谢谢,错误是因为我没有初始化dateFrom。我刚刚将这部分添加到模型 class
public ObjectProperty<LocalDate> dateFromProperty() {
if(dateFrom == null){
dateFrom = new SimpleObjectProperty<>();
}
return dateFrom;
}
感谢大家