首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合DatePicker

结合DatePicker
EN

Stack Overflow用户
提问于 2015-07-15 13:42:08
回答 1查看 2K关注 0票数 0

我想要bindBiderectional() DatePicker。以下是我所做的

代码语言:javascript
复制
@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());
...
}

模型类

代码语言:javascript
复制
@FlowScoped
public class Model {
private ObjectProperty<LocalDate> dateFrom;

public ObjectProperty<LocalDate> dateFromProperty() {
        return dateFrom;
    }
...
}

它抛出一个错误:

代码语言:javascript
复制
io.datafx.controller.FxmlLoaderException:java.lang.reflect.InvocationTargetException

原因是什么?

错误,在应用程序本身中抛出,它不会在控制台中写入任何内容。我已经删除了代码,当涉及到行dp_date_from.valueProperty...时,它会抛出一个异常:

代码语言:javascript
复制
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);
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 14:54:58

谢谢,错误是由于我没有初始化dateFrom。我刚把这个部分添加到模型类中

代码语言:javascript
复制
public ObjectProperty<LocalDate> dateFromProperty() {
        if(dateFrom == null){
            dateFrom = new SimpleObjectProperty<>();
        }
        return dateFrom;
    }

感谢每个人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31432127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档