Javafx 2.0 How-to Application.getParameters() in a Controller.java file

前端 未结 2 1482
我在风中等你
我在风中等你 2020-12-06 02:38

Considering the following sample.

How to access to arguments/parameters of the application in the controller?

Thank you.


2条回答
  •  借酒劲吻你
    2020-12-06 03:08

        public static  T load(String resource, final P parameter)
                throws MoisException {
            try {
                logger.debug("resource: {}; parameter: {}", resource, parameter);
                FXMLLoader loader = new FXMLLoader(getResource(resource));
                // pass parameter into Controller,before invoke the initialize()
                loader.setControllerFactory(new Callback, Object>() {
                    @Override
                    public Object call(Class param) {
                        Object controller = null;
                        try {
                            controller = ReflectUtil.newInstance(param);
                        } catch (InstantiationException e) {
                            throw new MoisException("can't new instance for: " + param.getName(), e);
                        } catch (IllegalAccessException e) {
                            throw new MoisException("can't new instance for: " + param.getName(), e);
                        }
                        if (controller instanceof ParameterAware) {
                            ((ParameterAware

    ) controller).setParameter(parameter); } return controller; } }); T node = (T) loader.load(); // pass parameter to node node.setUserData(parameter); return node; } catch (IOException e) { throw new MoisException("can't load the file: " + resource, e); } }

    and the ParameterAware:

    public interface ParameterAware {
        void setParameter(T param);
    }
    

提交回复
热议问题